为什么“mvn编译”需要“test-jar”依赖项
我在多模块项目中使用依赖项时遇到问题。例如,当我声明模块依赖于模块时(完整代码在这里):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>
如果我使用maven 2运行,我得到以下错误:mvn compile
[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
jar
使用 maven 2 或 maven 3,我可以通过运行 来编译它。使用maven 3,我还可以通过运行来编译它。mvn compile package -DskipTests
mvn compile test-compile
但是,为什么 maven 2 或 maven 3 在阶段中寻找依赖关系呢?难道不应该等到阶段才去寻找这样的依赖关系吗?test-jar
compile
test-compile
更新:答案是,在我的编译阶段使用的maven-exec-plugin需要对scope:test中的工件进行依赖关系解析。我创建了一个功能请求来删除 scope:test 依赖项。