Maven传递依赖

时间:2012-08-10 21:06:45

标签: maven-3

我有3个maven项目:第一个 - 带包装罐的“A”,第二个 - “B”包装罐,第三个 - “C”包装罐。 “C”依赖于“B”作为编译时依赖性,“B”依赖于“A”也作为编译时依赖性。项目“C”也使用“A”中的类。所以我有传递依赖C - > B - >答:但是当我尝试构建这些项目时,maven在编译项目C时失败并出现编译错误:它无法从“C”中使用的项目“A”中找到类。

我认为maven解决了传递依赖。为什么我会收到这样的错误?

2 个答案:

答案 0 :(得分:2)

Maven 解析传递依赖关系,但不会(通常)自动构建它们。您可以通过提供--also-make/-am标志以及项目列表来让maven做您想做的事情:

mvn -am -pl C clean install 

这假定A,B,C是共享父项的所有模块,并且您将在父目录中运行上面的命令。

答案 1 :(得分:0)

由于许多原因,Maven中的传递依赖性失败。您需要为此启用调试选项。 我遇到了类似的问题。我正在使用eclipse。在eclipse中为maven启用调试选项:Windows-> Preference-> Maven-> Tick标记调试输出

我的项目出错:

[WARNING] The POM for mil-pop2:java-json:jar:1.0 is invalid, transitive dependencies (if any) will not be available: 4 problems were encountered while building the effective model for mil-pop2:java-json:1.0
[ERROR] 'dependencies.dependency.systemPath' for java-json.jar:java-json.jar:jar must specify an absolute path but is ${project.basedir}/src/main/resources/lib/java-json.jar @ 

传递依赖失败的原因是我们依赖的项目从自定义路径而不是本地存储库继承jar。如果已提供,请删除自定义路径。

之前:

<dependency>
<groupId>java-json</groupId>
<artifactId>java-json.jar</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/java-json.jar</systemPath>
</dependency>

后:

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>

这解决了我的错误。