Configuration Java 6 configuration de traitement d'annotation pour compilateur Eclipse avec Maven

StackOverflow https://stackoverflow.com/questions/1480912

Question

Quelle est la meilleure façon de configurer la configuration du projet Eclipse du compilateur pour les processeurs d'annotation Java 6?

Ma solution est d'installer les fichiers org.eclipse.jdt.apt.core.prefs et factorypath manuellement. Ceci est un peu lourd:

  • Référence le pot de processeur dans le fichier factorypath
  • configurer le processeur d'annotation éclipse propriété répertoire de sortie (org.eclipse.jdt.apt.genSrcDir dans org.eclipse.jdt.apt.core.prefs)
  • Ajoutez l'annotation éclipse répertoire de sortie du processeur comme dossier source

Un problème est que les sources éclipse générées seront compilées avec Maven. Seul maven clean compile est fiable car il supprime les fichiers source Eclipse généré. (Eclipse et fichiers source générés javac pourraient être désynchronisés.)

Est il y a une meilleure solution pour configurer Maven sans éclipse généré les fichiers source au chemin source 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>
Était-ce utile?

La solution

Mise à jour: Vous pouvez essayer d'utiliser le apt-maven-plugin. Il fournit actuellement trois objectifs:

Vous pouvez configurer les objectifs pour exécuter dans le cadre de votre build comme suit:

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

Par défaut, le répertoire de sortie est réglé sur ${project.build.directory}/generated-sources/apt,

Il y a un ouvrir Jira contre le plugin compilateur pour ajouter le support APT pour Java 6, vous pouvez aller voter pour elle si cela est quelque chose que vous voulez voir dans les futures versions.

Autres conseils

J'utilise http://code.google.com/p/maven -annotation-plugin / Wich est plus simple à configurer. Vous pouvez l'utiliser de deux façons:

  • générer des sources lors de la compilation (configuration ci-dessous)
  • générer des sources "à la main" à src / main / généré et les garder sur 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>

Il existe une solution plus simple dans Eclipse Juno (je ne sais pas sur les versions précédentes). Préférences / Maven / Traitement Annotation il y a trois modes de traitement d'annotation. Il est désactivé par défaut, mais je l'ai testé les deux autres options et a travaillé comme un charme pour moi. De cette façon, vous n'avez pas besoin de configurer le traitement APT pour chaque projet ou modifier son pom.xml.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top