1. 無料アクセス解析

crossroad's Blog

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

スポンサーサイト

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

Maven2のjavadoc生成でコンパイルエラー

Maven2 でJavaDocを生成(mvn javadoc:javadoc)すると、
コンパイルエラーが発生しました。


例えば、JUnitのTestCaseを継承して、独自のTestCaseを作成し、JavaDocを生成しようとすると。。。


-----------------------------------------
> mvn javadoc:javadoc
  :
パッケージ foo.bar.test のソースファイルを読み込んでいます...
Javadoc 情報を構築しています...
標準 Doclet バージョン 1.5.0_11
全パッケージとクラスの階層ツリーを作成しています...
警告 3 個
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------

C:¥eclipse¥workspace¥foo¥src¥main
¥java¥foo¥bar¥test¥FooTestCase.javaa:23: シンボルを見つけられません。
シンボル: クラス TestCase
public abstract class FooTestCase extends TestCase {
                     ^

java.lang.NullPointerException
at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:65)
-----------------------------------------



JavaDoc生成以外では、Maven2からでも、Eclipse上でもコンパイルが通っているのに、
なぜかJavaDoc生成時にJUnitのTestCaseクラスが見つからず、コンパイルエラーになってしまいます。


原因は、pom.xmlの依存関係のスコープで、
--- pom.xml(抜粋) ---
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
-------------------
のようにJUnitライブラリを追加していたことでした。

JUnitなので、テスト時にしか使わないだろうと言うことでスコープをtestにしていました。
# testスコープのライブラリは、ユニットテストのコンパイルと実行にしか使用されません。(参考

ところが、JUnitを拡張して作成したクラスFooTestCaseは、
¥src¥test¥java下ではなく、¥src¥main¥java下に配置
していた...
つまり、ユニットテストではないので、testスコープの範囲外と言うことで、
JavaDoc生成時にJUnitライブラリがクラスパスに設定されないようです。


対応としては、pom.xmlで、JUnitのスコープを修正すれば良いのですが、
compileスコープにしてしまうと、実行モジュールにJUnitがバンドルされてしまう
(*.warの/WEB-INF/libに入ってしまう等)ので、

--- pom.xml(抜粋) ---
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>provided</scope>
</dependency>
-------------------
のように、providedにしました。

これならコンパイルも通るようになるし、実行モジュールにJUnitが入ってしまうこともありません。




関連記事
スポンサーサイト
  1. 2007/10/22(月) 23:11:59|
  2. ソフトウェア開発 Maven
  3. | トラックバック:0
  4. | コメント:0
<<au 秋冬モデル | ホーム | 情報処理試験(AE)受験してきました>>

コメント

コメントの投稿


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

トラックバック

トラックバックURLはこちら
http://bagineer.blog59.fc2.com/tb.php/101-11f69561
この記事にトラックバックする(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 

ブログ内検索

最近の記事

最近のコメント

最近のトラックバック

カレンダー

03 | 2017/04 | 05
- - - - - - 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 - - - - - -

月別アーカイブ

全ての記事を表示する

全ての記事を表示する

Twitter


RSSフィード

リンク

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

アクセスカウンタ

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