如何通过Maven Shade插件获取uberjar构建中包含的jar的列表?

时间:2020-06-16 16:03:43

标签: java maven maven-shade-plugin

我有一个(长长的)清单,列出了我的uber-jar中不应该包含的内容,我想要包含其中的内容,以便我可以进行配置并删除重复项。

我查看了mvn package打印的输出,其中列出了很多

[INFO] Including aaa.bbb:ccc.ddd:jar:x.y.z in the shaded jar

但是我可以肯定的是,当我使用minimizeJar选项时,其中的一些不包括在内。并且查看输出jar仅允许知道所包含的类(很难跟踪依赖项)

问题:我使用的是哪种配置,如何获得实际上已合并到uberjar中的依赖项列表?

2 个答案:

答案 0 :(得分:0)

我对maven-shade-plugin不熟悉,但是您尝试过mvn dependency:tree吗?它应该列出项目的所有依赖项及其子依赖项。

编辑:我重新阅读了您的问题,看来您需要最终uber-jar的完整依赖关系树。快速浏览maven-shade-plugin页后,我发现所有依赖项都将打包到uber-jar中。这应该是mvn dependency:tree输出的内容,但是jar tf <uber-jar>.jar也可以list the jar's contents。您可能必须过滤掉父目录(例如com /)和清单文件。

答案 1 :(得分:0)

这不是我要寻找的答案,但是为了信息共享,这是我要做的工作,以查找从阴影罐中删除哪个依赖项:

  • 使用mvn dependency:list > dep.list
    • 然后手动删除非依赖项的行
    • 并对其进行排序
  • 直观地与部署集群中存在的jar列表进行区分
  • mvn dependency:tree和我的头来查找父级可以删除的大多数依赖项
  • 将它们标记为<scope>provided<scope/>
  • 在阴影插件配置中使用<keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>

乏味...

相关问题