2011-08-07 15 views
3

我有一个行家项目期间编译过程产生从注释处理器一个新的类。该类已在/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> 

编辑

这似乎是一个已知的bug。如果任何人有一个可行的解决方法,这是值得欢迎的。

EDIT 2

我昨天已经进行了一些测试,但在票建议的解决办法是行不通的。我提供了一个测试用例。如果任何人有如何解决这个问题的见解,这是值得欢迎的。请记住,我是一个注册处理新手,所以可能有一些显而易见的缺失。

回答

5

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

从我读过似乎有一些问题与compilerArgumens,当你使用maven-处理器插件这些都解决了。

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

这里的处理器插件如何取代compilerArguments一个例子(例如使用Hibernate模型生成,但这个看起来差不多的各种注解处理器的...):http://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor

+0

这是要走的路(+1) –

+0

Hibernate示例/解决方法做到了。我只需要将目录更新为我生成的源代码。非常感谢 !!! – JVerstry

+0

@JVerstry:不客气 – fgysin

1

似乎所有你要做的是编译的类,而不是建立在罐子。 您需要使用Maven Jar Plugin 这是一个usage example

+0

坛子被构建为过程的一部分,但它不包含生成的代码。 – JVerstry

+0

然后看看这个线程http://stackoverflow.com/questions/4741220/maven-producing-empty-jar – Ali

+0

我的jar包含我的项目代码,但不包含生成的代码。 – JVerstry