战争项目依赖于 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)