マルチモジュールがありますJavaプロジェクト。Mavenはビルドに約40秒かかります。スレッドとコアの数に-Tおよび-C argsを指定して、マルチスレッドビルドでもMavenを試しました。しかし、ビルドのウォールタイムに大きな改善は見られませんでした。
maven 3.2.3を使用していますが、時々非常に頻繁にプロジェクトをビルドする必要があります。
クリーンな目標には時間がかかることは知っていますが、省略できません。
提案してください...
編集:
注:私の場合、クリーンアップにはそれほど時間はかかりません。 1秒で終了します。インストールには時間がかかります。
複数のスレッドで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は、マルチモジュールビルドの宣言されたモジュール間依存関係に基づいてこのグラフを計算します。親のMavenプロジェクトも依存関係であることに注意してください。これは、ほとんどのプロジェクトグラフの上に単一のノードがある理由を説明しています。リアクターの外側の依存関係は、このグラフに影響しません。
最後に、テストの実行をスキップする場合は、-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] *****************************************************************
以下のような小さな2のトリックを使用して、ビルドを最適化できます。
-DskipTests=true
を使用できるたびにテストケースを実行したくない場合mvn.bat
set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m
に追加します詳細については、 Mavenビルドを高速化する方法 を確認してください。
コマンドラインを使用する場合、マシンのコア数を確認し、それらすべてを使用できます。テストをスキップする場合は、-DskipTests
たとえば、8コアプロセッサがあります。
mvn -T 8C clean install -DskipTests
あなたが余分なRAMを持っているなら、あなたはハックな方法を行うことができます。そして、SSDは必要ありません。少し無効にします(MacOS-Winに同様の問題があるかどうか覚えていません)。
1)RAMドライブ(作成方法はOSによって異なります)を作成し、/ Users/Username/volatileフォルダーにマウントします)
2)MVN_HOME/libでmaven-module-builder-X.X.X.jarを見つけます
3)JARで、ファイルorg/Apache/maven/model/pom-4.0.0.xmlを変更して変更します
<ビルド> <ディレクトリ>/Users/Username/volatile/$ {project.groupId}/$ {project.artifactId}/$ {project.version}/target
4)これ以降、すべてのプロジェクトのコンパイルはメモリ内で行われます。また、SSDと比較しても違いがあります。
はい、そのハックと一部のMavenプラグインは、BTWの動作を停止する可能性があります。
私の実際のプロジェクトでは:
1/mvn clean install
[情報]合計時間:01:05時間
2/mvn clean install -DskipTests
[情報]合計時間:18:35分
3/mvn clean install -Dmaven.test.skip -DskipTests
[情報]合計時間:10:58分
4/mvn -T 1C clean install -Dmaven.test.skip -DskipTests
[INFO]合計時間:04:00分
多くの人が既に言及している並列実行とは別に、ビルド-XX:+ TieredCompilation -XX:TieredStopAtLevel = 1を高速化するこれらのMavenオプションを試してください。