test-jar
マルチモジュール プロジェクトで依存関係の使用に問題があります。たとえば、モジュールが次のようなcleartk-syntax
モジュールに依存することを宣言すると(完全なコードはこちら):cleartk-token
test-jar
<modelVersion>4.0.0</modelVersion>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-syntax</artifactId>
<version>0.5.0-SNAPSHOT</version>
<name>cleartk-syntax</name>
...
<dependencies>
...
<dependency>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-token</artifactId>
<version>0.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
mvn compile
Maven 2 を使用して実行すると、次のエラーが発生します。
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) org.cleartk:cleartk-token:test-jar:tests:0.7.0-SNAPSHOT
Maven 3 を使用すると、次のエラーが表示されます。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.654s
[INFO] Finished at: Mon Jan 24 21:19:17 CET 2011
[INFO] Final Memory: 16M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project cleartk-syntax: Could not resolve
dependencies for project org.cleartk:cleartk-syntax:jar:0.5.0-SNAPSHOT: Could
not find artifact org.cleartk:cleartk-token:jar:tests:0.7.0-SNAPSHOT
test-jar
後者の場合、 typeではなくtype のアーティファクトを探すべきだと思っていたので、特に混乱していますjar
。
maven 2 または maven 3 を使用すると、 を実行してコンパイルできますmvn compile package -DskipTests
。Maven 3 を使用すると、 を実行してコンパイルすることもできますmvn compile test-compile
。
しかし、フェーズ中にmaven 2 または maven 3 がtest-jar
依存関係を探しているのはなぜですか? そのような依存関係を探すフェーズcompile
まで待つべきではありませんか?test-compile
更新:答えは、私のコンパイル フェーズで使用される maven-exec-plugin には、 scope:test 内のアーティファクトの依存関係の解決が必要であるというものでした。scope:test の依存関係を削除する機能リクエストを作成しました。