2017-06-27 3 views
1

何も変更しないでMavenを実行すると、maven-compiler-pluginはJavaファイルを再コンパイルすることがよくあります。またはmaven-war-pluginは何も変更されていないにもかかわらず戦争を再構築またはコピーします。またはgwt-maven-pluginは、何も変更されていないにもかかわらず、Google Web Toolkitコードを(一部のコンピュータではなく他のコンピュータで)ビルドします。Mavenが再構築されている理由を確認するにはどうすればよいですか?

Mavenが何かを再構築する理由を確認するにはどうすればよいですか?たとえば、(間違って)どのファイルが変更されたと考えていますか?

例は次のとおりです。maven-compiler-pluginは、何も変更されていなくても、毎回戦争リソースを再コピーしています。開発に時間を節約するために「爆発」戦争を使用していますが、これは通常の戦争でも発生します。

なぜ Mavenの目標は、既存の出力を使用するのではなく、再構築を選択するのがより一般的です。

[INFO] Processing war project 
[INFO] Copying webapp webResources [d:\dev\proj1/war/WEB-INF] to [d:\dev\proj1\target\proj1-0.0.1-SNAPSHOT] 
[INFO] Copying webapp webResources [d:\dev\proj1/lib/libs] to [d:\dev\proj1\target\proj1-0.0.1-SNAPSHOT] 
[INFO] Copying webapp resources [d:\dev\proj1\war] 
Webapp assembled in [37919 msecs] 
+1

これは単一モジュールプロジェクトですか、マルチモジュールプロジェクトですか?どのバージョンのプラグインを使用しますか? – khmarbaise

+1

ベストはあなたのビルドのログファイルを表示することです...またはプロジェクト自体... – khmarbaise

+0

マルチモジュール。 どのようなログですか?ちょうどMaven出力?上記の例を追加しました。しかし、私の質問は、より一般的にどのようにMavenプラグイン - なぜGWT、戦争、コンパイル、または別のものかを調べる方法です - 既存の出力を使うのではなく、再構築を選択します。 –

答えて

1

のMavenプラグインは、独自の(おそらく使用してヘルパー)による古チェックを実装する必要があり、彼らは上の理由かどうかをログに記録自由ですので、何も一般的な答え(逆に、たとえば、Gradleのは)ありません。全体的には、Mavenの増分ビルドのサポートはかなり貧弱です(かなり古いですが、AFAICTは大部分が正確です)。各プラグイン(およびそのバージョン)に大きく依存します。

Mavenをログをデバッグし(mvn -X)、ログを調べてください。しかし、まずプラグインの最新バージョンを使ってみてください。つまり、についての答えがであるとみなされたわけではありません。入力が固定されていると見なされたり、観測された動作が修正されたりします。プラグイン自体のデバッグは別として、実際には他の方法はありません。

関連する問題