マルチモジュール Java プロジェクトがあります。Maven では、ビルドに約 40 秒かかります。使用するスレッド数とコア数に -T および -C 引数を指定して、マルチスレッド ビルドで Maven も試してみました。しかし、ビルドのウォールタイムに大きな改善は見られませんでした。
私は Maven 3.2.3 を使用しており、プロジェクトを頻繁にビルドする必要があることがあります。
クリーン ゴールに時間がかかることはわかっていますが、省略することはできません。
提案をお願いします...
編集:
注: 私の場合、クリーンアップにはあまり時間がかかりません。1 秒で完了します。残りの時間はインストールにかかっています。
ベストアンサー1
注: まず、私の知る限り、ここにあるすべての回答以外に、Maven で利用できる組み込みオプションはありません。
複数のスレッドで Maven ビルドを実行すると、ビルドが高速化されます。例:
mvn clean install -T100
ここで、-T はハードウェアに基づいて必要なスレッドの数を指定します。
以下はウィキからの派生です
Maven 3.x には並列ビルドを実行する機能があります。コマンドは次のとおりです。
- mvn -T 4 クリーンインストール 4スレッドでビルド
- mvn -T 1C クリーンインストール CPU コアごとに 1 スレッド
- mvn -T 1.5C クリーンインストール CPU コアあたり 1.5 スレッド
実行の評価方法(Maven 3 の並列ビルドを参照)?
グラフ内の各ノードは、マルチモジュール ビルド内のモジュールを表します。「レベル」は、内部リアクター依存関係グラフ内の最初のモジュールまでの距離を示します。Maven は、マルチモジュール ビルドの宣言されたモジュール間依存関係に基づいてこのグラフを計算します。親 Maven プロジェクトも依存関係であるため、ほとんどのプロジェクト グラフの上部に 1 つのノードがあるのはそのためです。リアクター外部の依存関係はこのグラフに影響しません。
最後に、テストの実行をスキップしたい場合は、 も使用できます-DskipTests
。
注意 :一部のプラグインはマルチスレッド ビルダーと互換性がない可能性がありますが、動作する可能性もあります。ただし、以下の警告メッセージが表示されます。マルチスレッド サポートについては、プラグインのドキュメントを参照する必要がある場合があります。
[WARNING] *****************************************************************
[WARNING] * Your build is requesting parallel execution, but project *
[WARNING] * contains the following plugin(s) that have goals not marked *
[WARNING] * as @threadSafe to support parallel building. *
[WARNING] * While this /may/ work fine, please look for plugin updates *
[WARNING] * and/or request plugins be made thread-safe. *
[WARNING] * If reporting an issue, report it against the plugin in *
[WARNING] * question, not against maven-core *
[WARNING] *****************************************************************
[WARNING] The following plugins are not marked @threadSafe in test-project:
[WARNING] de.dentrassi.maven:rpm:0.9.2
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.
[WARNING] *****************************************************************