思ってることってこんなもんだよ
maven2のsiteゴールによるレポートの出力

maven2によって管理されているプロジェクトは,siteゴールを使用することによって,さまざまな情報をWebページとして自動的に出力することができる。これについては,「maven2のsiteゴールによる標準Webページの出力」エントリで紹介した。今回は,プロジェクトの成果物に関する各種レポートをWebページとして出力するための方法を紹介してみよう。

Javaソフトウェア開発では,ソースコードを元にしてさまざまな2次的成果物を作成することになる。コンパイラによるclassファイルの生成や,コメントの記述を利用したJavadocの出力などが代表例としてあげられるだろう。それに加えて,単体テストの結果やカバレッジ率の測定結果なども,やはり2次的成果物ということができるだろう。

これらの出力は,maven2を利用していれば,いとも簡単に行うことができる。

ポイントは,pom.xmlファイルのreportingタグだ。各種レポートを出力するための機能は,maven2のプラグインとして提供されている。reportingタグの中に,出力したいレポートのためのプラグインの記述を行うことで,siteゴールの実行時にプラグインが機能するようになり,レポートが出力されるようになる。もちろん,出力結果の左にあるメニューに,レポートページを表示するためのリンクが追加される。

まずは,単体テストの結果をレポートとして出力するための記述を紹介しよう。

たったこれだけ追記すれば良い。「mvn site」を実行後,target/siteディレクトリにあるindex.htmlファイルをWebブラウザで表示すると,左のメニューに「Project Reports」-「Maven Surefire Report」という項目が追加されているのがわかるだろう。これをクリックすれば,プロジェクトに存在するJUnitテストケースの実行結果が表示されるはずだ。

maven-surefire-report.jpg

次は,Javadocを出力してみよう。Javadocを出力するためには,maven-javadoc-pluginプラグインを利用する。

先ほどよりも記述が多く感じるのは,Javadocを生成する際の文字コード関連の設定をconfigurationタグを使って記述しているからである。上記の例では,ソースコードのレベルが1.5,Javaソースファイルの文字コードはShift_JIS,Javadocのhtmlファイルを出力する際の文字コードはTF-8でcharset指定も一緒,JavaSE提供のコアAPIのリンクとしてjava.sun.comのURLを指定,といった設定を施している。

siteゴールを使用した場合,一度出力したファイルは,直接の変更がなければ上書きをしない,という動きになる。そのため,左のメニューにリンクが追加されないことがある。よって,「mvn clean site」というように,一旦前回の出力結果を削除してからsiteゴールを実行すると,確実だろう。

maven-javadoc.jpg

maven-javadoc2.jpg

では,カバレッジ測定結果のレポートも出力するようにしてみよう。これには,cobertura-maven-pluginプラグインを使用する。

お決まりのように「mvn clean site」を実行すれば,左のメニューに「Project Reports」-「Cobertura Test Coverage」リンクが追加されているのがわかるだろう。そのリンクをクリックすると,カバレッジ測定の結果が掲載されたページを表示することができる。

cobertura-test-coverage.jpg

cobertura-test-coverage2.jpg

今回紹介した3つのレポート以外にも,数多くのプラグインが存在する。他にどのようなレポートを出力することができるかは,「Available Plugins」のページの「reporting」に一覧があるので,参考にするといいだろう。お好みのプラグインを見つけてpom.xmlファイルのreportingタグに記述し,有益な情報をプロジェクトで共有して欲しい。

最後に,ちょっとしたテクニックというわけではないのだが,知っておくとより良いことを紹介しておこう。siteゴールでは,pom.xmlファイルに記述された定型的な情報が標準Webページとして出力される。しかし,プロジェクトによっては,メーリングリストを持ってるわけではなかったり,developersタグで開発者の情報を記述していなかったりする場合もあるだろう。そのような場合は,何も情報がない無駄ページは,出力されるWebページに含めないようにしておきたいところだ。

これを実現するには,maven-project-info-reports-pluginプラグインを使用すれば良い。

reportタグを使用して,出力したいページを指定することができるようになる。上記の例では,標準Webページの中から,依存ライブラリとプロジェクトサマリーの2つのみを出力するように指定している。この状態で「mvn clean site」とすることで,下記のようなメニューにすることが可能だ。

maven-project-info-reports.jpg

レポートが出力されるようになっただけでも,siteゴールの必要性は非常に高まる。継続的統合環境を作れば,さらに便利さが増してくるだろう。しかし,例えば一般に公開するライブラリのためのWebページとなると,Usageなど独自のWebページも追加したくなってくるはずだ。

次回は,Webページの自作の方法を紹介し,さらにmaven2を魅力的なツールとして感じられるようにしたい。