2009-09-26 19 views
16

¿Cuál es la mejor forma de configurar la configuración del compilador de proyecto de eclipse para los procesadores de anotación Java 6?Configuración de la configuración de procesamiento de anotación Java 6 para el compilador de eclipse con maven

Mi solución es configurar manualmente los archivos org.eclipse.jdt.apt.core.prefs y factorypath. Esto es un poco engorroso:

  • referencia el frasco procesador en el archivo factorypath
  • configurar el procesador de anotación Eclipse directorio de salida (org.eclipse.jdt.apt.genSrcDir propiedad en org.eclipse.jdt.apt.core.prefs)
  • Añadir el directorio de salida del procesador Eclipse anotación como carpeta de origen

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).

¿Existe una mejor solución para configurar los archivos fuente generados maven sin 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> 

Respuesta

6

Actualización: Puede intentar utilizando el apt-maven-plugin. Actualmente proporciona tres objetivos:

Puede configurar los objetivos para funcionar como parte de su estructura 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 se establece en ${project.build.directory}/generated-sources/apt,

Hay un open Jira contra el plugin del compilador para agregar soporte APT para Java 6, puede votar y votar si esto es algo que desea ver en versiones futuras.

+2

No está abierto más, se implementó en 2.2. – bmargulies

3

Estoy usando http://code.google.com/p/maven-annotation-plugin/ que es más fácil de configurar. Se puede utilizar de dos maneras:

  • generar fuentes durante la compilación (configuración más adelante)
  • generar fuentes "a mano" a src/main/generados y mantenerlos en SMC
 <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> 
2

Hay una solución más simple en Eclipse Juno (no estoy seguro de las versiones anteriores). En Preferencias/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.

+0

Creo que esta característica no es parte del núcleo de Eclipse M2E, pero es una contribución de y después de instalar https://github.com/jbosstools/m2e-apt. – vorburger

Cuestiones relacionadas