为Java 6注释处理器设置Eclipse项目编译器配置的最佳方法是什么?
我的解决方案是手动设置org.eclipse.jdt.apt.core.prefs和factorypath文件。这有点麻烦:
org.eclipse.jdt.apt.core.prefs
factorypath
(org.eclipse.jdt.apt.genSrcDir
一个问题是,Eclipse生成的源将使用maven进行编译。Only maven clean compile是可靠的,因为它删除了Eclipse生成的源文件。(Eclipse和javac生成的源文件可能不同步。)
maven clean compile
有没有更好的解决方案来配置Maven,而不会在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>
更新:您可以尝试使用apt-maven-plugin。当前,它提供了三个目标:
您可以按以下方式配置目标以使其作为构建的一部分运行:
<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>
默认情况下,输出目录设置为${project.build.directory}/generated-sources/apt,
${project.build.directory}/generated-sources/apt
有一个针对编译器插件的开放Jira,用于添加对Java 6的APT支持,如果您希望在以后的版本中看到它,可以投票支持。