我在多模块项目中使用test-jar
依赖关系时遇到问题。例如,当我宣布cleartk-syntax
模块依赖于cleartk-token
模块的test-jar
像这样(完整代码here):为什么“mvn compile”需要“test-jar”依赖关系
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) org.cleartk:cleartk-token:test-jar:tests:0.7.0-SNAPSHOT
:
<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>
我碰到下面的错误,如果我使用maven 2运行mvn compile
如果我用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
类型的工件,而不是jar
类型。
使用maven 2或maven 3,我可以通过运行mvn compile package -DskipTests
来编译它。使用maven 3,我也可以通过运行mvn compile test-compile
来编译它。
但为什么maven 2或maven 3在compile
阶段寻找test-jar
依赖关系?它不应该等到test-compile
阶段才能寻找这样的依赖关系吗?
更新:答案是,我的编译阶段使用的maven-exec-plugin,requires dependency resolution of artifacts in scope:test。我创建了a feature request to remove the scope:test dependency。
但是,如果是这样的话,为什么`mvn compile package`工作? – Steve 2011-01-24 22:54:25
你已经提到它只在你提供-DskipTests = true变量时才有效。这可以是内部优化maven的东西吗? – WeMakeSoftware 2011-01-25 08:36:10
它没有使用-DskipTests。我只是补充说,因为我只是试图编译,而不是测试。 – Steve 2011-01-25 14:44:58