使用maven程序集插件将多个jar集合到一起时处理冲突的文件

jon*_*rry 5 maven

我遇到了一个问题,我在项目中包含了一些第三方罐子,而第三方罐子在jar文件的根目录中都有相同名称的配置文件.当我使用时执行mvn package构造一个jar(用于部署)时maven-assembly-plugin,生成的jar文件只在根目录中包含一个配置文件,并且它只包含其中一个配置文件的内容.然后,当我从"超级jar"运行我的应用程序时,由于缺少配置而发生错误.我认为使用maven-shade-plugin会有所帮助,因为它似乎支持连接这些文件,但这种方法不起作用(冲突的文件没有附加,而且我收到了关于以前没有发生的重复导入apache commons库的新警告).

以最自动和可维护的方式处理此问题的最佳方法是什么?

mor*_*wai 0

maven-shade-plugin确实可以帮助解决这个问题,但是您需要正确配置它以使用资源转换器:请参阅https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html
有专门的转换器可用于常见的 java 东西(比如 SPI 文件META-INF/services和清单文件)只需要启用,以及更通用的转换器需要被确切地告知要做什么。

maven-assembly-plugin也可以做类似的事情,但它需要编写您自己的程序集描述符。请参阅类似问题中的答案。