6

アノテーション プロセッサを使用してソースを生成するビルドを Maven に移動しようとしています。次のようにmaven-compiler-pluginを構成しようとしました:

    <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は失敗します

[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-compiler-pluginに渡すにはどうすればよいですか?


更新: maven-annotation-pluginが機能していないようです。

として構成されている場合

        <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>

実行は失敗します

[INFO] [processor:process {execution: process}]
error: Annotation processor 'xxx.annotation.EnforceJavaBeansConventionsProcessor' not found
1 error
4

7 に答える 7

5

プラグインは、ハードコードされたWindowsクラスパスセパレーターを使用してクラスパスを構築していたため、Linuxマシンで失敗していました。

提出されたパッチ:

于 2009-10-19T14:13:28.770 に答える
5

あなたの質問への正確な答えではありませんが、興味があります:

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

Maven で JSR 269 を使用すると、少なくともデフォルトのコンパイラ プラグインを使用すると、多くの問題が発生するのではないかと心配しています。

于 2010-01-23T18:58:32.467 に答える
4

私は何かが欠けているかもしれませんが、そうすべきではありません:

  1. フェーズtarget/generated-sources/annotation-processing中にソースを生成しますか? apt-maven-pluginまたはmaven-annotation-pluginが役立ちますgenerate-sources

  2. ソースをコンパイルしてmaven-compiler-pluginまたはmaven-build-helper-plugintarget/classesで使用するときに、生成されたソースを含めますか?<includes>

編集:どこにxxx.annotation.EnforceJavaBeansConventionsProcessorありますか?使用法ページdependenciesに記載されているように、maven-annotation-plugin の構成に追加する必要はありませんか?

<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

于 2009-10-19T11:36:28.400 に答える
1

この理由の 1 つは、$JAVA_HOME が jdk 1.6 ではなくバージョン 1.5 を指していることです。(もちろん、Windowsでは %JAVA_HOME% をチェックしてください)

于 2011-08-19T14:25:55.007 に答える
1

GWTP Source Generate APT Processing アノテーションでこの問題が発生しました

これは、最終的なセットアップであるコンパイラ プラグインのバージョンを設定しなかったためです。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <!-- <compilerArgument>-proc:none</compilerArgument> -->
        <generatedSourcesDirectory>${generated.sources}</generatedSourcesDirectory>
        <annotationProcessors>
            <annotationProcessor>com.gwtplatform.dispatch.annotation.processor.GenEventProcessor</annotationProcessor>
            <annotationProcessor>com.gwtplatform.dispatch.annotation.processor.GenDtoProcessor</annotationProcessor>
            <annotationProcessor>com.gwtplatform.dispatch.annotation.processor.GenDispatchProcessor</annotationProcessor>
        </annotationProcessors>
    </configuration>
</plugin>
于 2012-12-16T03:20:49.570 に答える
0

私は同じ問題を抱えています...


[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 installが動作するはずです :-)

于 2012-05-04T12:59:34.780 に答える