实际上,通过设计,Maven不会解决声明为项目依赖的战争的传递依赖性 . 实际上有一个问题,MNG-1991,但它不会在Maven 2.x中解决,我不确定我是否不知道覆盖是否允许解决此问题 . 我对建议的解决方案的理解是复制依赖项,例如在pom类型的项目中 .
(编辑:经过一些挖掘,我在this thread找到了一些有趣的东西,我在下面引用:
在过去的一个月里,我一直在帮助开发AppFuse项目,我们在Maven war插件中大量使用了war叠加功能 . 这是一个非常漂亮的功能!为了通过战争覆盖获得最大功率,我开发了Warpath插件,允许项目将war工件用作完全成熟的依赖项 . 简而言之:1)war依赖项工件中/ WEB-INF / classes目录的内容可以包含在项目的类路径中,用于正常的编译等任务 . 2)来自战争依赖性工件的传递依赖性变得可供其他插件使用,例如,编译和收听 - 所以在创建瘦战时不再需要包含所有依赖项!该插件现在已经在AppFuse项目中被积极使用了几个月,我觉得它正处于可用和稳定的程度 . war插件团队是否有兴趣在war插件中包含warpath功能?这似乎是举办它的最自然的地方 .
所以,我对它没有任何经验,但maven warpath plugin实际上看起来很简单,并且可以在中央仓库中找到 . 要使用它,请在 pom.xml 文件中包含以下插件配置元素:
[...]
org.appfuse
maven-warpath-plugin
1.0-SNAPSHOT
true
add-classes
[...]
并将您希望包含在类路径中的war依赖项添加为 warpath 类型依赖项:
[...]
org.appfuse
appfuse-web
2.0
war
org.appfuse
appfuse-web
2.0
warpath
[...]
war和warpath依赖类型都是必需的:Maven war插件使用war类型来进行war覆盖,Warpath插件使用warpath类型来确定包含在项目类路径中的正确的工件列表 .
我试一试 . )