在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存在许多问题,至少使用默认的编译器插件。

我可能会遗漏一些东西,但不应该:

  1. generate-sources阶段生成target/generated-sources/annotation-processing中的generate-sources ? apt-maven-plugin或maven-annotation-plugin可以提供帮助。

  2. 在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-plugintarget / 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