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以获取此类差异的示例)
答案 0 :(得分:0)
使用Eclipse Mars(m2e插件)中的Maven 3.2.5发现了同样的问题。
使用Maven 3.3.3 (需要Java 7或8)解决它,默认情况下使用Eclipse Mars打包。