如何获取 maven shade 插件构建的 uberjar 中包含的 jar 列表?



我有一个(长(列表,列出了我的 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>

乏味。。。

最新更新