1. 無料アクセス解析

crossroad's Blog

Javaを中心にした技術ネタなど。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Mavenトラブル事例-TomcatプラグインでJCoverageレポート生成エラー

続Mavenでのトラブル事例。

Maven1.1で、TomcatプラグインとJCogerageレポートを併用した際、
以下の問題が生じました。

Tomcatプラグインで、JSPのプリコンパイルを有効にすると、
ROOT/target/tomcat/src 下に生成されたServletのソースコード
が出力されます。

この状態で、JCoverageレポートを生成すると。。。

jcoverage:html-report:
[report] jcoverage 1.0.5 copyright (c)2003 jcoverage ltd. http://jcoverage.com/
[report] jcoverage is licensed under the GNU General Public License
[report] jcoverage comes with ABSOLUTELY NO WARRANTY
Generate report for C:\\Hoge/target/jcoverage/coverage.xml
file.OutputDir = C:\\Hoge/target/docs/jcoverage
java.io.FileNotFoundException:
C:\\Hoge\\target\\docs\\jcoverage\\org\\apache\\jsp\package-frame.html
(指定されたパスが見つかりません。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:179)
at java.io.FileOutputStream.(FileOutputStream.java:131)
at java.io.FileWriter.(FileWriter.java:73)
at org.apache.maven.jcoveragereport.CoverageReport.generateClassList(CoverageReport.java:162)
at org.apache.maven.jcoveragereport.CoverageReport.generatePackageList(CoverageReport.java:132)
at org.apache.maven.jcoveragereport.CoverageReport.generate(CoverageReport.java:59)
at org.apache.maven.jcoveragereport.CoverageReportGenerator.execute(CoverageReportGenerator.java:68)

とエラーが発生します。

これは、JCoverageレポートが、プリコンパイルで生成されたServletの
カバレージを計測しようとしたが、ソースディレクトリに
ROOT/target/tomcat/src が含まれていないことが原因です。


対応はいくつかの設定が必要です。

--- maven.xml ----------------------------------------
1: <preGoal name="jcoverage:html-report">
2:   <!-- TomcatプラグインのプリコンパイルJSPのソースパス -->
3:   <j:set var="location.precompiledjsp.src" value="${maven.build.dir}/tomcat/src/java"/>
4:
5:   <available file="${location.precompiledjsp.src}" type="dir"
6:    property="exists.precompiledjsp" value="true"/>
7:   <j:if test="${exists.precompiledjsp}">
8:     <ant:path id="my.other.src.dir" location="${location.precompiledjsp.src}"/>
9:     <maven:addPath id="maven.compile.src.set" refid="my.other.src.dir"/>

10:   </j:if>
11: </preGoal>

このように、JCoverageレポートのpreGoalを追加し、プリコンパイル
されたServletの所在をソースディレクトリに追加します。


ポイントは、5~7行目です。
ここで、プリコンパイのディレクトリの存在チェックを行い、
存在しない場合は、ソースディレクトリを追加しないようにします。
こうしておかないと、今度は逆にプリコンパイルしていない状態で
JCoverageプラグインがエラーになってしまいます。

--- project.properties --------------------------------
# プリコンパイルされたJSPソース(org.apache.jsp.xxx_jsp.class)は、カバレージ検査対象から外す
>maven.jcoverage.instrumentation.excludes = org/**/*.*

次に、プリコンパイルされたServletをJCoverageレポートの対象から外します。
プリコンパイルされたServletのJUnitテストなんて書いているわけがないので、
JCoverageの対象にすると、カバレージが下がってしまう為です。


こうして見てみると、Mavenのプラグイン群は、組み合わせの相性が脆弱である
といわざるを得ません。
1つの組織で開発しているわけではなく、多くのオープンソースコミュニティ
によって開発されているので、しょうがないとは思いますが。。。


関連記事
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2006/08/26(土) 01:38:10|
  2. ソフトウェア開発 Maven
  3. | トラックバック:0
  4. | コメント:0
<<Mavenトラブル事例-Maven1.0.xでTomcatプラグイン | ホーム | Mavenトラブル事例-プロパティ名にハイフンは使えない>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://bagineer.blog59.fc2.com/tb.php/27-f2b92f26
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

crossroad

Author:crossroad
関西在住。男。
フリーランスのソフトウェアエンジニア。
エレキベース(Rock&Roll)とお酒が好物でございます。

カテゴリー

タグリスト

Java F1 フリーランス ベーシスト HARRY TheStreetSliders iPhone FX お酒 Seasar Maven eclipse Wicket マイホーム 野球 プロジェクトファシリテーション Rails Ruby UML お店 ソフトウェア Tomcat S2Flex2 jsf Teeda Eclipse タグライブラリ ajax タスク europa mylyn trac 

ブログ内検索

最近の記事

最近のコメント

最近のトラックバック

カレンダー

07 | 2017/03 | 08
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

月別アーカイブ

全ての記事を表示する

全ての記事を表示する

Twitter


RSSフィード

リンク

このブログをリンクに追加する

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。