1

战争项目依赖于 com.mycompany:somejarname:1.0。它依赖于 slf4j-log4j12(仅在运行时该 jar 需要)。

打包的战争不包括 slf4j-log4j12-我的理解是它应该被包括在内,因为由于传递依赖:war --> somejarname --> slf4j-log4j12。依赖关系树确实显示了依赖关系,但它不包含在最终的 war 包中。

[INFO] +- com.mycompany:somejarname:jar:1.0:compile
[INFO] |  +- common-crypt:common-crypt:jar:1.0:compile
[INFO] |  +- org.apache.axis2:axis2-spring:jar:1.5.1:compile
[INFO] |  +- org.objenesis:objenesis:jar:1.1:compile
[INFO] |  +- org.mockito:mockito-all:jar:1.9.0:compile
[INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.5.6:compile
[INFO] |  \- net.sf.json-lib:json-lib:jar:jdk15:2.4:compile
[INFO] |     \- net.sf.ezmorph:ezmorph:jar:1.0.6:compile

有什么建议么?使用 Maven 3

更新:这适用于 Maven 2.2.1,但不适用于 Maven 3.0.4。Maven 3 中的依赖解析从 2.2.1 更改。

更新: Maven 3 中的依赖树功能与 Maven 2.2.1 中的相同,因此上面的树显示 slf4j-log4j12。

此外,并非 Maven 2.x 解析 API 的所有部分都可以桥接到 Aether。最值得注意的是用于 mvn dependency:tree 的 maven-dependency-tree 共享组件仍然使用旧的解析代码。因此, mvn dependency:tree 的输出可能与 Maven 本身用于派生项目类路径的实际依赖树不同(有关此类差异的示例,请参见 MSHARED-167)

4

1 回答 1

0

使用来自 Eclipse Mars(m2e 插件)的 Maven 3.2.5 发现了同样的问题。

通过使用 Eclipse Mars 默认打包的 Maven 3.3.3(需要 Java 7 或 8)解决了这个问题。

于 2015-08-26T09:41:36.850 回答