我有一个带有子模块的maven war项目。一个模块使用google-api-client
,另一个模块使用google-cloud-storage
。我在下面绘制了它们的一些依赖项。
A
|-google-api-client:jar:1.33.1
|-google-http-client-gson:jar:1.41.1
B
|-google-cloud-storage:jar:2.4.4
|-google-api-client:jar:1.33.1
|-google-http-client-gson:jar:1.41.2
当打包战争时,gson 1.41.1
和1.41.2
都将被打包。我知道maven有一个最近的规则来确定编译时使用哪个jar。但是,当when服务器加载我的项目时,我无法控制首先将哪个jar加载到哪个jar。所以我只想为每个罐子保留一个更新的版本。
我知道我可以将<exclusion>
标记添加到依赖项中,并添加一个新的依赖项来告诉maven使用特定版本的jars。但是,我不确定这是否是最佳实践,因为它要求我遍历第三方库的依赖关系。他们太多了。
对于如何正确处理多个版本的jars,有什么建议吗?
发布于 2022-03-08 19:51:42
我推荐的一个好做法是使用具有依赖收敛目标的执行器插件。这样,您就不得不决定哪个版本将出现在类路径上。当然,这可能是额外的工作,因为您必须处理冲突(也是通过设置排除),但最终它是很好定义的,您得到了哪些版本。
https://stackoverflow.com/questions/71399945
复制相似问题