8 コアのデスクトップを使用して、Ant を使用して (javac ターゲットを介して) Java アプリケーションを構築します。複数のスレッドまたはプロセスを使用してコンパイルを高速化する方法はありますか?
複数の Ant タスクを並行して実行できることはわかっていますが、これを単一のコンパイル ターゲットに適用できるとは思いませんか?
8 コアのデスクトップを使用して、Ant を使用して (javac ターゲットを介して) Java アプリケーションを構築します。複数のスレッドまたはプロセスを使用してコンパイルを高速化する方法はありますか?
複数の Ant タスクを並行して実行できることはわかっていますが、これを単一のコンパイル ターゲットに適用できるとは思いませんか?
複数のコアを有効に活用するように ant 自体に指示する方法がわかりません。ただし、組み込みのマルチスレッド コンパイルをサポートするEclipse Compiler を使用するように ant に指示することはできます。
呼び出している javac がすべてのコアを使用しない限り、Ant で何を言っても問題ありません。このcompiler
属性を使用して、タスクに使用する Java コンパイラを定義できます。
複数のビルド ターゲットがある場合はfork=yes
、ターゲットを外部で実行するために使用できます。
http://ant.apache.org/manual/Tasks/javac.html#compilervalues
ドキュメントは、それが正しく動作する可能性が低いことを示しているようjavac
です。
javadoc と javac のような大規模な Ant タスク シーケンスを同時に実行しようとする人は、実行するタスクのすべての同時実行バグを特定して修正するタスクを暗黙のうちに引き受けています。
したがって、このタスクには用途がありますが、マルチウェイ CPU でビルド時間を短縮するための簡単なトリックではなく、特定のバッチ処理またはテストの状況で使用する高度なタスクと見なす必要があります。
私が知る限りではありません。Eclipse コンパイラーは、複数のコアを使用して高速化するためにいくつかの作業を行っていますが、おそらく期待するほど多くは得られません。
質問は、開発用にインクリメンタル コンパイルを使用して、変更されたものだけを再コンパイルできますか? その後、完全な再構築をビルド サーバーに任せることができます。