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コンパイラに渡す'annotationProcessor'引数の代わりに、 maven-processor-pluginを使用することをお勧めします。

私が読んだことから、compilerArgumensにはいくつかの問題があるようですが、maven-processor-pluginを使用するとそれらは解決されます。

ここで、maven-processor-pluginに関する詳細情報を見つけることができます:http://maven-annotation-plugin.googlecode.com/svn/docs/usage.html

プロセッサプラグインがcompilerArgumentsを置き換える方法の例を次に示します(この例ではHibernate Metamodel Generatorを使用していますが、これはすべての種類のアノテーションプロセッサでほぼ同じように見えます...): http: //relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor

于 2011-08-08T12:58:31.303 に答える
1

あなたがしているのは、クラスをコンパイルすることだけであり、jarをビルドすることではないようです。MavenJarプラグインを使用する必要があります これは使用例です。

于 2011-08-07T20:05:58.387 に答える