我在Eclipse中有一个多模块Maven项目 . 它有一个jar模块,“myapp-core”和一堆.war模块 . 核心模块依赖于一些外部jar,战争模块依赖于核心 .
问题是,当我构建.war文件时,所有依赖项都会被复制到所有WEB-INF / lib文件夹中,所以我们有重复项 . 理论上,解决问题的正确方法是将myapp-core中的依赖项赋予“提供”范围 . 不幸的是,当我这样做时,所有.war模块都会出现编译错误 . 无论如何,所有传递依赖都会被复制!
如何设置以便排除战争中常见的依赖关系?
(不幸的是,我不能一个接一个地排除所有传递文物 . 它们中有大约50个,而且这是一个不断变化的列表 . )
2 回答
您可以使用配置节排除和包含工件
供参考,请参阅here
您可以排除某些工件所引入的某些传递依赖项,而不是“提供”,并允许保留其他依赖项 . 例如 . ,
然后设置你的pom让X排除B1 . 然后你得到最新最好的B和最新的C(假设B2是B1的较新版本,C2是C1的较新版本) . 此外,您可以声明D1为依赖项,或将其标记为“已提供” .
有关更多示例,请参阅mvnref-book/dependencies,另请参阅另一个堆栈交换问答here