garbagetown

個人の日記です

はじめの三歩

友達のいない windows ユーザのための「泥酔しながら cubby で一人寂しく遊ぶシリーズ」第三弾です。

mvn site

泥酔していた昨日の自分は他人であり、書いたコードの意味が分からなくなったりバグったりデグレったりなんかは日常茶飯事です。せっかく maven をインストールしたので、javadoc やテストレポート等を自動生成して、泥酔した昨日の自分がプロジェクトを破壊しない環境を整えましょう。
スタートメニューから「Trac」->「コマンドプロンプト」を選択すると適当に環境変数を設定した状態でコマンドプロンプトが開くので、プロジェクトルートに移動して mvn site を実行します。

D:\>cd work\test
D:\work\test>mvn site
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - org.garbagetown:test:war:0.1.0
[INFO]    task-segment: [site]
[INFO] ------------------------------------------------------------------------
[INFO] [site:site]
[WARNING] No URL defined for the project - decoration links will not be resolved
[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
(snip)
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Project Summary" report.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 minutes 39 seconds
[INFO] Finished at: Tue Aug 04 23:16:38 JST 2009
[INFO] Final Memory: 27M/50M
[INFO] ------------------------------------------------------------------------

プロジェクトサイトが正常に生成されたら "BUILD SUCCESSFUL" と表示されるので、ブラウザを起動して file:///d:/work/test/target/site/index.html にアクセスします。

かっこいい!

reporting

これだけでは javadoc やテストレポートは出力されないので、pom.xml の末尾に タグを追記し、プラグインをどんどん設定します。

maven-site-plugin

まずは maven-site-plugin を使ってプロジェクトサイトを日本語で表示します。

(snip)
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <configuration>
          <locales>ja</locales>
          <inputEncoding>UTF-8</inputEncoding>
          <outputEncoding>UTF-8</outputEncoding>
        </configuration>
      </plugin>
    <plugins>
  </reporting>
</project>

先ほどと同様に mvn site してから file:///d:/work/test/target/site/index.html を開くと

日本語になった!

maven-javadoc-plugin

続いて maven-javadoc-plugin を使って javadoc を出力します。

(snip)
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <docencoding>UTF-8</docencoding>
          <charset>UTF-8</charset>
          <encoding>UTF-8</encoding>
          <links>
            <link>http://java.sun.com/javase/ja/6/docs/ja/api/</link>
            <link>http://s2container.seasar.org/2.4/s2-framework/ja/apidocs/</link>
            <link>http://s2container.seasar.org/2.4/s2-extension/ja/apidocs/</link>
            <link>http://s2container.seasar.org/2.4/s2-tiger/ja/apidocs/</link>
            <link>http://cubby.seasar.org/20x/cubby/apidocs/</link>
          </links>
          <bottom>copyright (c) 2009 garbagetown.org. all rights reserved.</bottom>
        </configuration>
      </plugin>
  </reporting>
</project>

やっぱり mvn site して file:///d:/work/test/target/site/apidocs/index.html にアクセスしてみると

見慣れた javadoc が表示されます。encoding は必須として、link や bottom を使うとますますいい感じ。

maven-surefire-report-plugin

さらに続いて maven-surefire-report-plugin を使ってテストレポートを出力します。

(snip)
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report-only</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
  </reporting>
</project>

しつこく mvn site して file:///d:/work/test/target/site/surefire-report.html を開くと

テストの実行結果がいい感じのデザインで表示されます。

emma-maven-plugin

さらにさらに続いて emma-maven-plugin を使ってテストカバレッジレポートを出力します。

(snip)
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>emma-maven-plugin</artifactId>
      </plugin>
  </reporting>
</project>

mvn site で file:///d:/work/test/target/site/emma/index.html 開くと

テストカバレッジを一覧する事ができます。
同類の maven プラグインに Cobertura Maven Plugin があり、知名度、デザイン共に cobertura の方が上だとは思うのですが、コンテナに seasar2 を使っている場合、レポート作成時に ArrayIndexOutOfBoundsException が発生する *1 ので、emma を使うのが無難です。
ただし、emma もレポート作成時に テストを二回実行する と言う地味に嫌な仕様なので悩ましいところです。

maven-jxr-plugin

最後に maven-jxr-plugin を使ってソースコードを html に出力します。

(snip)
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <configuration>
          <aggregate>true</aggregate>
          <inputEncoding>UTF-8</inputEncoding>
          <outputEncoding>UTF-8</outputEncoding>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>

mvn site で file:///d:/work/test/target/site/xref/index.html で

個人的には jxr はあっても無くてもいいかな、と思っています。

*1:seasar2 のバグではありません。cobertura に対応を依頼する方向で調査中