2012-02-16 18 views
12

私はプロジェクトをビルドする時間を最適化するつもりです。最も時間のかかるものの1つは、プロジェクトの編集です。Mavenプロジェクトのインクリメンタルなビルドを改善する方法は何ですか?

ため、ここで特に言及達人の既知の問題に: Maven incremental building 我々は、すべての構築プロセスの前MVNクリーンを使用する必要があります。

私はこの質問を調査し、二つのアプローチを見出した:私はIncremental-build-plugin Maven Mojoをテストしてきたし、それはかなりよさそうだ

  1. Incremental-build-plugin Maven Mojo
  2. Maven 2 Reactor Plugin

。私が見る通り、Maven 2 Reactor Pluginはほぼ同じ機能を実装していますが、結果を得るために特別なコマンドを指定する必要があります(mvn reactor:makeなど)。

したがって、Maven 2 Reactor Pluginは、ローカルコンピュータのビルの時間を最適化する場合にのみ、開発者にとってより便利であるという結論を下しました。しかし、Maven 2 Reactor Pluginがホストされていて公式のメイヴンプラグインとしてサポートされているので(私が思う)、Incremental-build-plugin Maven Mojoがjava.netでホストされているので、少し躊躇しています。

そして、私の質問は以下のとおりです。

  1. は、これら2つのプラグインが右ほぼ同じ問題を解決するというのが私の結論はありますか?
  2. 誰もこれらのプラグインを使用していて、フィードバックを返すことができますか?
  3. 建物の最適化に関する他のアイデアはありますか?
+0

私の質問は:どのくらいのコンパイルがかかりますか?テストはどのくらいかかるのですか?その関係はどうですか? – khmarbaise

答えて

-1

ジェンキンス(またはハドソン)を使ってみましたか?それはかなりいいですし、多くの小さな従属プロジェクトを管理しています。サーバー上にセットアップすることも非常に簡単です。私は少なくともそれを試してみることをお勧めします。サーバーを設定し、20個のプロジェクトを構成するには数分かかります。

私が気に入っていることは、ソースコントロールを監視してX分ごとにビルドを実行し、アップストリームプロジェクトを自動的に構築することです。

+0

Hudson/Jenkinsはビルドを最適化していません(これはOPの質問です)。また、H/Jを使用すると、ビルドに永遠にかかるローカルビルドには役立ちません – Attila

0

リアクタプラグインは、ビルド内でモジュールのサブセットのみをビルドする場合は、最後のコンパイル以降に変更されたモジュールをビルドすることを目的としています。

私は同じエフェクトを使用していますが、あなたが言ったことからインクリメンタルビルドプラグインにもっと興味があると思います。あなたが私が知らないコンパイルされていない変更を持っている場合、必要なモジュール/依存関係だけを構築するために、2つを一緒に使うことができるかどうか。

PS - 最新のインクリメンタルビルドプラグインリリースでクリーンなバグが修正されたと思います。

3

上記の2つのプラグインは、使用するコンパイル時間を短縮しません。コンパイル時間を短縮したいのであれば、並列ビルドサポートでmaven 3にアップデートすることを提案したいと思います。

しかし、上記のプラグインで行われていることは、リアクタープラグインのsvn関連の機能を除いて、maven3を使用してそのままでも実行できます。これについては前の記事で述べたようにジェンキンが必要です。

ビルドをスピードアップする

便利Mavenの3つの機能:

mvn clean compile -T 3 (using three threads for paralell builds) 

mvn -amd -pl groupid:arifactId (builds the specified projects and all dependent artifacs) 
関連する問題