Configuration Java 6 configuration de traitement d'annotation pour compilateur Eclipse avec Maven
-
18-09-2019 - |
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
dansorg.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>
La solution
Mise à jour: Vous pouvez essayer d'utiliser le apt-maven-plugin. Il fournit actuellement trois objectifs:
- apt-processus sur les sources apt Exécute du projet.
- apt: processus de test apt Exécute sur les sources de test du projet.
- apt: Eclipse Eclipse génère des fichiers pour l'intégration apt .
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.