我有一个(长(列表,列出了我的 uber-jar 中不应该包含的内容,我想要包含的内容的列表,以便我可以进行配置并删除重复项。
我查看了mvn package
打印的输出,其中列出了很多
[INFO] Including aaa.bbb:ccc.ddd:jar:x.y.z in the shaded jar
但我很确定当我使用minimizeJar
选项时,其中一些不包括在内。并且查看输出jar只能知道包含的类(很难跟踪依赖关系(
问题:我使用哪种配置,如何获取实际合并到 uberjar 中的依赖项列表?
我不熟悉maven-shade-plugin
,但是你试过mvn dependency:tree吗?它应列出项目的所有依赖项及其子依赖项。
编辑:我重新阅读了您的问题,似乎您需要最终 uber-jar 的完整依赖树。快速浏览maven-shade-plugin
页面告诉我,任何依赖项都将打包到uber-jar中。这应该是mvn dependency:tree
输出的内容,但您可以使用jar tf <uber-jar>.jar
列出 jar 的内容。您可能需要过滤掉父目录(例如.com/(和清单文件。
这不是我正在寻找的答案,但为了信息共享,以下是我为找到要从阴影罐中删除的依赖项所做的:
- 使用
mvn dependency:list > dep.list
- 然后手动删除不是依赖项的行
- 并对其进行排序
- 直观地使用部署群集上存在的 JAR 列表进行比较
- 使用
mvn dependency:tree
和我的头找到父级最可以删除的依赖项 - 将它们标记为
<scope>provided<scope/>
- 在阴影插件配置中使用
<keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>
乏味。。。