首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Maven中的注释处理器设置生成的源目录

为Maven中的注释处理器设置生成的源目录
EN

Stack Overflow用户
提问于 2009-10-19 10:54:31
回答 7查看 30.8K关注 0票数 6

我正在尝试将使用注释处理器生成源的构建移动到Maven。我尝试过按以下方式配置maven编译器插件:

代码语言:javascript
复制
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <compilerArgument>-s ${project.build.directory}/target/generated-sources/annotation-processing</compilerArgument>
            </configuration>
        </plugin>
    </plugins>

但是javac失败了

代码语言:javascript
复制
[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 <options> <source files>  
use -help for a list of possible options

据我所知,-s应该在源文件之前传递给javac,但是maven随后会传递它。

如何正确地将-s标志传递给maven编译器插件?

更新:maven-注释插件似乎不起作用。

配置为

代码语言:javascript
复制
        <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
                <execution>
                    <id>process</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>
                        <outputDirectory>${generated.sources.directory}</outputDirectory>
                        <processors>
                            <processor>xxx.annotation.EnforceJavaBeansConventionsProcessor</processor>
                        </processors>
                    </configuration>
                </execution>
            </executions>
        </plugin>

执行失败

代码语言:javascript
复制
[INFO] [processor:process {execution: process}]
error: Annotation processor 'xxx.annotation.EnforceJavaBeansConventionsProcessor' not found
1 error
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-19 14:13:28

这个插件使用了硬编码的Windows类路径分隔符来构建类路径,所以它在我的Linux机器上失败了。

提交的补丁:

  • 系统相关路径分隔符
  • 允许运行默认的处理器发现机制
票数 5
EN

Stack Overflow用户

发布于 2010-01-23 18:58:32

不完全是你问题的答案,而是令人感兴趣的:

https://issues.apache.org/jira/browse/MCOMPILER-75

恐怕在Maven中使用JSR 269存在许多问题,至少在默认编译器插件中是这样的。

票数 5
EN

Stack Overflow用户

发布于 2009-10-19 11:36:28

我可能错过了什么,但你不应该:

  1. target/generated-sources/annotation-processing阶段在generate-sources阶段生成源?apt-maven插件maven-注释插件可以提供帮助。
  2. 在使用target/classesmaven-plugin中的<includes>将源编译为maven编译器插件时包括生成的源

编辑: xxx.annotation.EnforceJavaBeansConventionsProcessor在哪里?您不需要将dependencies添加到用法页面中所记录的maven注释插件的配置中吗?

代码语言:javascript
复制
<plugin>
  <groupId>org.bsc.maven</groupId>
  <artifactId>maven-processor-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <executions>
    <execution>
      <id>process</id>
      <goals>
        <goal>process</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <outputDirectory>src/main/generated</outputDirectory><!-- PROCESSOR OUT DIR --> 
        <processors><!-- LIST OF PROCESSOR CLASS(S) -->
          <processor>org.bsc.apt.BeanInfoAnnotationProcessor</processor>
        </processors>
      </configuration> 
    </execution>
  </executions>
  <dependencies/><!-- ADD DEPENDENCIES HERE IF REQUIRED -->
</plugin>

PS:我不会使用src/main/generated作为输出目录,而是使用target/generated-sources的子目录。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1588038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档