在Maven中为注释处理器设置生成的源目录
我正在尝试将使用注释处理器生成源的构建移动到Maven。 我尝试过如下配置maven-compiler-plugin:
org.apache.maven.plugins maven-compiler-plugin true -s ${project.build.directory}/target/generated-sources/annotation-processing
但是javac失败了
[INFO] Compilation failure Failure executing javac, but could not parse the error: javac: invalid flag: -s /home/robert/workspaces/betbrain/sportsengine.common/sportsengine.bean.test/target/target/generated-sources/annotation-processing Usage: javac use -help for a list of possible options
据我所知,-s应该在源文件之前传递给javac,但maven之后传递它。
如何将-s
标志正确传递给maven-compiler-plugin?
更新 : maven-annotation-plugin似乎不起作用。
配置为时
org.bsc.maven maven-processor-plugin 1.0-SNAPSHOT process process generate-sources ${generated.sources.directory} xxx.annotation.EnforceJavaBeansConventionsProcessor
执行失败
[INFO] [processor:process {execution: process}] error: Annotation processor 'xxx.annotation.EnforceJavaBeansConventionsProcessor' not found 1 error
该插件使用了编码的Windows类路径分隔符来构建类路径,因此它在我的Linux机器上失败了。
提交的补丁:
- 系统相关路径分隔符
- 允许运行默认的处理器发现机制
不完全是你的问题的答案,但感兴趣:
http://jira.codehaus.org/browse/MCOMPILER-75
我担心在Maven中使用JSR 269存在许多问题,至少使用默认的编译器插件。
我可能会遗漏一些东西,但不应该:
-
在
generate-sources
阶段生成target/generated-sources/annotation-processing
中的generate-sources
? apt-maven-plugin或maven-annotation-plugin可以提供帮助。 -
在maven-compiler-plugin或maven-build-helper-plugin中使用
将源代码编译到target/classes
时包含生成的源?
编辑: xxx.annotation.EnforceJavaBeansConventionsProcessor
在哪里? 您是否需要在“ 使用情况”页面上记录的maven-annotation-plugin配置中添加dependencies
?
org.bsc.maven maven-processor-plugin 1.0-SNAPSHOT process process generate-sources src/main/generated org.bsc.apt.BeanInfoAnnotationProcessor
PS:我不会使用src/main/generated
作为输出目录,而是使用target/generated-sources
的子目录。
其中一个原因可能是$ JAVA_HOME指向jdk 1.5版本而不是1.6版本。 (在Windows上检查%JAVA_HOME%当然)
我遇到了同样的问题……
[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] Failure executing javac, but could not parse the error: javac: invalid flag: -s ...
你使用的是java 5吗?
$ mvn -version Apache Maven 2.2.1 (rdebian-8) Java version: 1.5.0_22 Java home: /usr/lib/jvm/java-1.5.0-sun-1.5.0.22/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux" version: "3.2.0-24-generic" arch: "amd64" Family: "unix" $ which java /usr/bin/java $ ll /usr/bin/java /usr/bin/java -> /etc/alternatives/java* $ ll /etc/alternatives/java /etc/alternatives/java -> /usr/lib/jvm/java-1.5.0-sun/jre/bin/java*
$ sudo update-alternatives --config java $ mvn -version Apache Maven 2.2.1 (rdebian-8) Java version: 1.6.0_24 Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux" version: "3.2.0-24-generic" arch: "amd64" Family: "unix"
现在, mvn安装应该工作:-)
我一直在使用maven-processor-plugin
如下:
org.bsc.maven maven-processor-plugin 2.2.4 process-my-annotations process generate-test-sources xyzMyAnnotationProcessor ${project.build.directory}/generated-test-sources/test-annotations ${project.build.directory}/test-classes
生成的代码进入目标/生成测试源/测试注释 ,并将生成的资源转换为目标/测试类 ( 过程目标的默认值分别是目标/生成源和目标/类 )。
我还需要使用maven-build-helper-plugin
将target / generated-test-sources / test-annotations添加到测试源路径,以便测试编译阶段将编译生成的代码。
我在GWTP Source Generate APT Processing注释中遇到了这个问题
这是因为我没有为编译器插件设置一个版本,我的最终设置:
org.apache.maven.plugins maven-compiler-plugin 3.0 1.6 1.6 ${generated.sources} com.gwtplatform.dispatch.annotation.processor.GenEventProcessor com.gwtplatform.dispatch.annotation.processor.GenDtoProcessor com.gwtplatform.dispatch.annotation.processor.GenDispatchProcessor