オリジナル: Building a maven2 project
Jenkinsはmaven2専用のジョブタイプを提供します。このジョブタイプはJenkinsとMaven2を密接に統合し、より汎用的なフリースタイルソフトウェアプロジェクトと比較して次の利点があります。
- JenkinsはMavenのPOMを解析して、それを実行するのにより多くの必要な情報を取得します。その結果、設定は劇的に削減されます。
- JenkinsはMavenの実行状態を監視して、いつ何が行われているのか把握し、MavenがテストフェーズであればJunitのレポートを自動的に記録したり、Javadocゴールを起動すれば、自動的にJavadocを保存します。
このように、SCMの情報さえ設定し実行したいゴールを設定さえすれば、Jenkinsはそれ以外すべてを理解します。
Mavenのバージョン
Some user reported a problem using this feature with Maven versions other than 2.0.4. We are particularly interested in any reports on this kind of issues.
Here is one such report: Using Jenkins 1.337 on top of Tomcat 6.0.14 on top of MS XP, Maven 2.0.7 would "hang" inside Jenkins but not using the command line. Trying it with Maven 2.0.4 resulted in success inside Hudson, and a resolution of the problem with 2.0.7.
TODO
Talk about how maven modules gets represented in sub projects, and how build numbers among sub-projects are controlled. Use some screenshots.
モジュールの依存性による連鎖的な自動ビルド
JenkinsはPOMからプロジェクトの依存関係を読み取ります。そして、それらもJenkins上でビルトされるなら、依存関係にある1つのビルドが、自動的にプロジェクトのビルドを始めるように設定されます。JenkinsはPOMのあらゆる依存性を把握しています。すなわち、
- 親のPOM
- プロジェクトの<dependencies>タグ
- プロジェクトの<extensions>タグ
- プロジェクトの<reporting>タグ
このプロセスはバージョンを考慮しているので、同一Jenkins上にプロジェクトのバージョン/ブランチを複数構築できます。そして、正しく依存性を解決します。