JenkinsでMavenレポートを出力する
JenkinsでMavenレポートを出力する。
MavenとJenkinsを使ってJavaのレポート出力をやってみた。
下記を読んだテイで書く。
Maven
mvn clean test site
をたたいてHTML形式のレポートを出力する親POMを下記に作った。
親POM
※2017年2月17日時点での最新バージョンにしている。
※ javancss-maven-plugin
はJava8未対応だったためコメントアウト。
プラグインの概要
reporting
タグの部分だけ記載する。
org.apache.maven.plugins:maven-site-plugin
mvn site
コマンドの実装- 以下の「Project Information」を出力する
Dependencies
:依存ライブラリの一覧Dependency Convergence
:同一依存ライブラリの全てのバージョンを集約して表示Dependency Information
:このプロジェクトの依存の書き方Dependency Management
:最終的に適用される依存ライブラリの一覧Distribution Management
:配布するリポジトリの情報About
:POMのdescriptionの記載Plugin Management
:最終的に適用されるプラグインの一覧Project Plugins
:buildおよびreportingに使用されるプラグインの一覧Project Summary
:プロジェクト情報のサマリ
org.apache.maven.plugins:maven-javadoc-plugin
Project Reports
の「JavaDocs」および「Test JavaDocs」を出力する
org.apache.maven.plugins:maven-surefire-report-plugin
Project Reports
の「Surefire Report」を出力する- テストの件数、エラー数、失敗数等を出力する
org.apache.maven.plugins:maven-jxr-plugin
Project Reports
の「Source Xref」および「Test Source Xref」を出力する- JavaソースコードをHTML形式で出力する
org.apache.maven.plugins:maven-pmd-plugin
Project Reports
の「PMD」を出力する- PMDはJavaコードを分析して潜在的なバグを探すツール
org.apache.maven.plugins:javancss-maven-plugin
Project Reports
の「JavaNCSS」を出力する- JavaNCSSはJavaコードの品質や複雑度に関するメトリクスを出力する
org.jacoco:jacoco-maven-plugin
Project Reports
の「JaCoCo」を出力する- JaCoCo による単体試験のカバレッジ測定結果
org.apache.maven.plugins:maven-checkstyle-plugin
Project Reports
の「Checkstyle」を出力する
org.codehaus.mojo:findbugs-maven-plugin
Project Reports
の「FindBugs」を出力する
org.apache.maven.plugins:maven-project-info-reports-plugin
- プロジェクトの情報を出力する
- cim、help、issue-tracking、license等
- プロジェクトの情報を出力する
以上の情報がHTML形式で target/site
配下へ出力される。
testFailureIgnore
について
親POMのbuild⇒plugins⇒pluginのmaven-surefire-pluginの設定で testFailureIgnore
を true にするとテストでコケてもレポート出力するようになる。
と、同時に mvn test
でコケてもSUCCESS となってしまう。
こうなってくると、Jenkinsで DailyTestで失敗しても気づかない ことになってしまう。
なので、 testFailureIgnore
はPOMで設定せず、以下のようにするといい。
- JenkinsによるDailyTest
mvn test -Dmaven.test.failure.ignore=false
- これでテストでコケたら FAILURE になる(ちなみにデフォルトfalse)
- Jenkinsによるレポート出力
mvn clean test site -Dmaven.test.failure.ignore=true
- これでテストでコケても SUCCESS になり、レポートが出力される
Jenkins
Jenkinsのジョブで mvn clean test site
をした後、Jenkinsの HTML Publisher Plugin
で下記のように設定すればJenkinsのジョブのページにSiteで出力したレポートへのリンクが作成される。
Publish HTML reports
:チェックボックスをオン- HTML directory to archive
- 例)
target/site/
- 例)
- Index page[s]
- 例)
index.html
- 例)
- Report title
- 例)
HTML Report
- 例)
- HTML directory to archive
レポートの表示が崩れている(CSS/JSが適用されていない様子)場合は下記を参照。
また、今回Mavenで出力しなかったJavaコード解析情報について、下記のJenkinsプラグインを使用するとカバーできる。
- DRY Plugin
- コピペコードのような重複したコードをチェックしてくれる
- Task Scanner Plugin
- ソースコードを任意の文字列で検索するチェックをかけることができる
- FIXME、TODO、XXX、deprecated、System.out.printlnとかスキャンしてくれる
- ソースコードを任意の文字列で検索するチェックをかけることができる
- Warnings Plugin
- コンパイラの警告をチェックしてくれる
- Step Counter Plugin
- ファイル行数をカウントしてくれる