【发布时间】:2015-05-31 00:31:55
【问题描述】:
当你使用maven-shade-plugin 构建一个fat jar 时,在相同路径但源自不同依赖项的文件之间可能会发生冲突。同样,当它们并排放置在阴影中的公共位置时,很难区分位于各个依赖项根目录的各种依赖项特定文件(LICENSE.txt、本机库...)的来源罐子。
maven-shade-plugin 本身和类似的jarjar-maven-plugin 似乎提供了自动重定位类的功能,但不提供依赖项中的其他文件,例如以下示例中的文件:
当前杂乱结构示例
/
- NOTICE
- magic.gz
- LICENSE.txt
- LICENSE
- asm-license.txt
/ META-INF
- LICENSE.TXT
- about.html
/ com.some.library
<class files>
/ com.some.other.library
<class files>
/ com.some.third.library
<class files>
这是我刚开始的一个项目的一个例子。上面的文件都不是我添加的,但都来自我正在使用的各种流行的第三方库。我想通过让 Maven 在通用包结构中重新组织文件来清理这个混乱,如下例所示:
所需清洁结构示例
/
/ com.some.library
<class files>
- NOTICE
- LICENSE
/ META-INF
- about.html
/ com.some.other.library
<class files>
- magic.gz
- LICENSE.txt
/ com.some.third.library
<class files>
- asm-license.txt
/ META-INF
- LICENSE.TXT
我有很多依赖项,所以我不认为使用硬编码文件名编写依赖项特定的过滤器/重定位器/...是解决此问题的好方法。
你如何自动组织 all 文件从你的阴影 jar 中的依赖项?理想情况下,通过将依赖项中的所有文件重新定位到以依赖项命名的子文件夹中。
【问题讨论】:
标签: java maven maven-shade-plugin