可以在pom.xml中包含一个本地文件,方法是在本地存储库中安装jar文件,或者提供指向本地jar的链接并将作用域设置为“system”。如果我包含一个fat jar(=包含所有可传递依赖项的jar),会发生什么?maven还能正确地检测依赖冲突吗?我还能排除我的“胖jar依赖”的一些可传递依赖吗?
问题是,我正在处理一个遗留软件项目,它以前没有使用任何构建工具/依赖关系管理工具(所以所有需要的jar都只是下载并添加到类路径中)。我想把它转换成一个maven项目。对于所有的开源依赖项来说,这并不是很困难(因为几乎所有依赖项都可以在maven central或其他存储库中获得)。在某些情况下,我们拥有很久以前获得的专有库,可以作为fatjar使用。
maven shade插件在这种情况下有帮助吗?
1条答案
按热度按时间gorkyyrv1#
fat jar作为依赖项是危险的,因为如果fat jar包含
x.jar
以及x.jar
在类路径上也存在,那么通常会发生冲突。maven不会解决冲突,因为maven不知道fat jar中包含哪些jar。因此,当您有一个fatjar依赖项时,您需要确保fatjar中的所有内容都不是项目中其他地方的依赖项,如果是这样,您应该排除它。
如果对内容进行着色处理,则可以避免此类冲突。