2016-03-11 42 views
7

Dagger2を使用し、MavenでビルドするデスクトップJavaプロジェクトがあります。 compilepackageを順番に実行することはできません。これは動作します:Maven:コンパイルOK、パッケージOK、コンパイル+パッケージが失敗する

$ mvn clean 
$ mvn compile 

そして、これがエラーなしで実行される実行可能jarファイル作成、作品:

$ mvn clean 
$ mvn package 

をしかし、これは失敗します。

$ mvn clean 
$ mvn compile 
$ mvn package 

packageがDagger2を使用するモジュールになると、出力:

[INFO] Changes detected - recompiling the module! 

mvn -e packageからエラーがある:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <dependencies> 
     <dependency> 
      <groupId>com.google.dagger</groupId> 
      <artifactId>dagger-compiler</artifactId> 
      <version>2.1</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <forceJavacCompilerUse>true</forceJavacCompilerUse> 
    </configuration> 
</plugin> 

これが唯一のダガーである:

<dependency> 
    <groupId>com.google.dagger</groupId> 
    <artifactId>dagger</artifactId> 
    <version>2.1</version> 
    <scope>compile</scope> 
</dependency> 

モジュールは、このようなバージョン3.3プラグインコンパイラを使用:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project weapon: Compilation failure -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project weapon: Compilation failure 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure 
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:915) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 

モジュールは、この依存性を有します関連する構成。 buildの後にpackageを実行できないのはなぜですか?

おそらく関連:forceJavacCompilerUseはもはや必要ではないと思ったが、それがなければ、ダガーはまったく動作していないようだ。生成されたコンポーネント実装(DaggerMyComponent)で不明なシンボルエラーが発生します。

編集:は、このコマンドプロンプトしてコマンドプロンプト、mvn -e packageのフル出力である:

[email protected]:~/Projects/IDEA/Dark Matter$ mvn -e package 
[INFO] Error stacktraces are turned on. 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Build Order: 
[INFO] 
[INFO] parent 
[INFO] weapon 
[INFO] scripts 
[INFO] assembly 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building parent 2.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building weapon 2.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ weapon --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ weapon --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 8 source files to /home/kevin/Projects/IDEA/Dark Matter/weapon/target/classes 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] parent ............................................ SUCCESS [0.001s] 
[INFO] weapon ............................................ FAILURE [1.641s] 
[INFO] scripts ........................................... SKIPPED 
[INFO] assembly .......................................... SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.735s 
[INFO] Finished at: Fri Mar 11 04:32:38 MST 2016 
[INFO] Final Memory: 21M/173M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project weapon: Compilation failure -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project weapon: Compilation failure 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure 
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:915) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :weapon 
[email protected]:~/Projects/IDEA/Dark Matter$ 

編集2:私はclean後に自身でpackageを実行すると、それはコンパイルだと言うことに気づきました6ソース。それはプロジェクトに手書きのクラスがいくつあるのかということです。 をpackageの前に実行すると、後者は8つのソースをコンパイルしていると言います。 dagger-compilerがクリーンなプロジェクトで実行されているようで、ソースを自動的に生成してコンパイルします。その後、packageは新しいソースを見て、それらをコンパイルしようとします。謎はなぜそれが失敗するのですか? compileを2回続けて実行すると、同じ方法で失敗します。

編集3:私は-processor引数としてdagger.internal.codegen.ComponentProcessorを指定して、this answerを試してみました。これが期待されている

[INFO] --- maven-compiler-plugin:3.3:compile (process-annotations) @ weapon --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 6 source files to /home/kevin/Projects/IDEA/Dark Matter/weapon/target/classes 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ weapon --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ weapon --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 8 source files to /home/kevin/Projects/IDEA/Dark Matter/weapon/target/classes 

、このcompileが成功する:今、私はコンパイル最初に実行するときは、私は2つの、それが6つのファイルをコンパイルパスして8つのファイルを参照してください。しかし、package、またはcompileを再度実行すると、これまでと同じように失敗します。

ダガーの生成元は/target/generated-sources/annotationsです。私はMavenにそのパスで何かをさせる必要があると思うが、私は何がわからない。 compileは、行が2回実行されたときにソースの変更が検出されることが理にかなっていますが、なぜそれが失敗につながるのかわかりません。たぶん私は条件付きで注釈処理ステップを実行する必要があるかもしれませんが、私はそれを行う方法や条件が何であるべきかわかりません。

+0

コンパイルエラーメッセージに基づいてエラー出力の完全な原因を表示できますか?もっと出力する必要があります。 – khmarbaise

+0

@khmarbaiseこれは完全な出力です。私が残した唯一の事は、「もっと詳しく知りたければ...」最後にある定型文です。 –

+0

そうではありません。実際の問題を示している最後の部分だけでなく、実際の問題を表示するmaven-compiler-pluginの近くに出力があります... – khmarbaise

答えて

3

私はあなたの問題を再現することができました。

キーは、私がmaven-compiler-plugin:3.1で実行すると、エラーが顕在化しないmaven-compiler-plugin:3.3

のようです。

+1

コンパイラプラグインのバグかもしれません。 [この問題](https://issues.apache.org/jira/browse/MCOMPILER-236)と密接に関連しています。先月リリースされたバージョン3.5.1で修正されたことを確認しました。 –