由 shade 插件生成的依赖性减少 pom.xml的目的是什么?
2022-08-31 09:42:56
我仔细阅读了文档,没有找到任何关于它的用途的东西。
shade:shade Mojo有很好的文档记录,这里特别是关于参数,它将创建该文件:maven-shade-plugin/shade-mojo.html#createDependencyReducedPom
createDependencyReducedPom
dependency-reduced-pom.xml
简而言之,如果您打算使用该着色JAR(而不是普通JAR)作为另一个模块的依赖项,这将非常有用。这将不包含阴影中已经存在的 JAR,从而避免无用的重复。dependency-reduced-pom.xml
我读了大约一百次左右的文档,仍然无法理解这是为了什么,它的真正用例是什么。
最后,这就是我的想法:假设你有一个依赖关系为A,B,C,D,E的项目。在配置阴影插件时,当它创建uber-jar(调用它)时,它在阴影罐中包含A,B,C,但由于某种原因,即使您的项目依赖于它们,您也决定不在着色罐中包含D,E - 一个恰当的例子是仅用于测试的依赖项(例如,任何具有a的依赖项,并且不包含在阴影罐)。将在其中定义D,E。这个想法是,如果有人想使用,提供某种提示,当心其中缺少依赖关系D,E - 使用风险自负。然后,您可能决定在将使用 的项目中显式添加 D、E。pom.xml
foo.jar
scope
test
dependency-reduced-pom.xml
foo.jar
dependency-reduced-pom.xml
foo.jar
foo.jar
因此,它更像是并列出了由shade插件输出的uber-jar中缺少的依赖项。dependency-reduced-pom.xml
missing-dependencies.xml