3

我有一个 Maven 项目在编译过程中从注释处理器生成一个新类。该类在 中成功生成/target/generated-sources/annotations/,但未编译到.jar. 为什么?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>${project.build.source}</source>
        <target>${project.build.target}</target>
        <encoding>${project.build.sourceEncoding}</encoding>
        <compilerArgument>-Xlint</compilerArgument>
        <annotationProcessors>
                <annotationProcessor>net.preprocessing.MyAnnotationProcessor</annotationProcessor>
        </annotationProcessors>
    </configuration>
</plugin>

编辑

这似乎是一个已知的错误。如果有人有可操作的解决方法,欢迎提出。

编辑 2

我昨天进行了一些测试,但票证中建议的解决方法不起作用。我提供了一个测试用例。如果有人对如何解决此问题有见解,欢迎提出。请记住,我是注释处理的新手,所以我可能缺少一些明显的东西。

4

2 回答 2

6

我建议使用maven-processor-plugin而不是传递给 maven 编译器的“annotationProcessor”参数。

从我读过的内容来看,compilerArgumens 似乎存在一些问题,当您使用 maven-processor-plugin 时,这些问题都得到了解决。

在这里您可以找到有关 maven-processor-plugin 的更多信息:http: //maven-annotation-plugin.googlecode.com/svn/docs/usage.html

这是处理器插件如何替换 compilerArguments 的示例(该示例使用 Hibernate 元模型生成器,但这对于所有类型的注释处理器看起来都差不多...):http ://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor

于 2011-08-08T12:58:31.303 回答
1

看来您所做的只是编译类而不是构建 jar。您需要使用Maven Jar Plugin 这是一个使用示例

于 2011-08-07T20:05:58.387 回答