我们有一个项目A依赖于项目B,项目B依赖于库C. A和B是本地项目,而C是maven central repo中的公共库。
A的pom.xml:
<name>ProjA/name>
...
<dependency>
<groupId>com.abc</groupId>
<artifactId>ProjB</artifactId>
<version>1.0</version>
</dependency>
p的pom.xml:
<name>ProjB/name>
...
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>2.23.2</version>
</dependency>
在A中运行mvn dependency:tree -Dverbose
时,它不解析B的依赖关系,并且B中使用的此类依赖关系也不会显示在A的Maven依赖关系中。这适用于编译,但由于NoClassDefFound错误而在运行时会失败。
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjA 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ ProjA ---
[INFO] com.abc.projA:jar:1.0
[INFO] +- com.abc.projB:jar:1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.326 s
[INFO] Finished at: 2016-09-15T16:29:49-07:00
[INFO] Final Memory: 13M/309M
[INFO] ------------------------------------------------------------------------
有没有办法让maven解决像B这样的本地依赖的传递依赖?
答案 0 :(得分:2)
我认为这里的问题是B在本地回购.m2
您需要为B运行mvn install
,才能将软件包安装到.m2
,这可以由A本地接收。
然后在A中运行mvn dependency:tree -Dverbose
会导致问题