java - que - maven tutorial español
Configuración de la configuración de procesamiento de anotación Java 6 para el compilador de eclipse con maven (3)
¿Cuál es la mejor manera de configurar la configuración del compilador del proyecto eclipse para los procesadores de anotación Java 6?
Mi solución es configurar manualmente los archivos org.eclipse.jdt.apt.core.prefs
y factorypath
. Esto es un poco engorroso:
- Haga referencia al contenedor del procesador en el archivo factorypath
- Configure el directorio de salida del procesador de anotación eclipse
(org.eclipse.jdt.apt.genSrcDir
property enorg.eclipse.jdt.apt.core.prefs
) - Agregue el directorio de salida del procesador de anotación eclipse como carpeta fuente
Un problema es que las fuentes generadas por eclipse se compilarán con maven. Solo maven clean compile
es confiable ya que elimina los archivos fuente generados por eclipse. (Los archivos fuente generados por Eclipse y javac podrían no estar sincronizados).
¿Hay una mejor solución para configurar maven sin archivos generados generados por eclipse en la ruta de origen de maven?
<project>
<properties>
<eclipse.generated.src>${project.build.directory}/eclipse</eclipse.generated.src>
</properties>
<build>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals> <goal>add-source</goal> </goals>
<configuration>
<sources>
<source>${eclipse.generated.src}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<additionalConfig>
<file> <name>.factorypath</name>
<content><![CDATA[<factorypath>
<factorypathentry kind="VARJAR" id="M2_REPO/processor/processor.jar" enabled="true" runInBatchMode="false"/>
</factorypath>
]]> </content>
</file>
<file>
<name>.settings/org.eclipse.jdt.apt.core.prefs</name>
<content><![CDATA[
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=${eclipse.generated.src}
org.eclipse.jdt.apt.reconcileEnabled=true
]]> </content>
</file>
</additionalConfig>
</configuration>
</plugin>
</plugins>
</build>
</project>
Actualización: podría intentar usar el apt-maven-plugin . Actualmente proporciona tres objetivos:
- apt-process Ejecuta apt en las fuentes del proyecto.
- apt: test-process Ejecuta apt en fuentes de prueba de proyecto.
- apt: eclipse Genera archivos Eclipse para la integración de apt.
Puede configurar los objetivos para ejecutar como parte de su compilación de la siguiente manera:
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<goals>
<goal>process</goal>
<goal>test-process</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
Por defecto, el directorio de salida está configurado en ${project.build.directory}/generated-sources/apt
,
Hay un Jira abierto contra el complemento del compilador para agregar soporte APT para Java 6, puede ir y votarlo si esto es algo que desea ver en versiones futuras.
Estoy usando http://code.google.com/p/maven-annotation-plugin/ que es más fácil de configurar. Puedes usarlo de dos maneras:
- generar fuentes durante la compilación (configuración a continuación)
- generar fuentes "a mano" para src / main / generated y mantenerlas en SCM
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<compilerArguments>-encoding ${project.build.sourceEncoding}</compilerArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process-test</id>
<goals>
<goal>process-test</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<compilerArguments>-encoding ${project.build.sourceEncoding}</compilerArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
<!-- Disable annotation processors during normal compilation -->
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
Hay una solución más simple en Eclipse Juno (no estoy seguro de las versiones anteriores). En Preferences / Maven / Annotation Processing, hay tres modos para el procesamiento de anotaciones. Está deshabilitado de forma predeterminada, pero he probado otras dos opciones y funcionó como un encanto para mí. De esta forma, no necesita configurar el procesamiento APT para cada proyecto ni modificar su pom.xml.