战争包中不包含传递依赖

时间:2012-07-23 03:54:51

标签: maven-2 maven-3

war项目依赖于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

UPDATE :这适用于Maven 2.2.1,但不适用于Maven 3.0.4。 Maven 3中的Dependency resolution已从2.2.1更改。

Maven 3中的

更新dependency tree功能与Maven 2.2.1中的功能相同,因此上面的树显示了slf4j-log4j12。

  

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

1 个答案:

答案 0 :(得分:0)

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

使用Maven 3.3.3 (需要Java 7或8)解决它,默认情况下使用Eclipse Mars打包。