调用 maven 包命令时创建的 `dependency-reduced-pom.xml` 文件是啥?
Posted
技术标签:
【中文标题】调用 maven 包命令时创建的 `dependency-reduced-pom.xml` 文件是啥?【英文标题】:What is `dependency-reduced-pom.xml` file which created when calling maven package command?调用 maven 包命令时创建的 `dependency-reduced-pom.xml` 文件是什么? 【发布时间】:2014-12-17 12:09:16 【问题描述】:我正在关注 springsource here 的 maven 教程,在 1)添加 joda-time
依赖项和 2)调用 mvn package
命令后,我们得到以下文件 dependency-reduced-pom.xml
。
我的问题是,除了pom.xml
文件之外,创建这个文件的目的是什么?
【问题讨论】:
我猜你正在使用 maven-shade-plugin? maven.apache.org/plugins/maven-shade-plugin/… 是的。本教程使用它。 Maven shade plugin adding dependency-reduced-pom.xml to base directory的可能重复 What is the purpose of dependency-reduced-pom.xml generated by the shade plugin?的可能重复 【参考方案1】:如果您将标志 createDependencyReducedPom
设置为 true(默认为 true),则已包含到 uber JAR 中的 依赖项将被删除 来自生成的 POM 的 <dependencies> section
。
简化后的 POM 将被命名为 dependency-reduced-pom.xml 并存储在与着色工件相同的目录中。
除非您还指定dependencyReducedPomLocation
,否则插件将在项目 basedir 中创建一个名为 dependency-reduced-pom.xml 的临时文件。
从这里提取http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#createDependencyReducedPom
【讨论】:
所以这意味着当依赖项已经在 .jar 中时,我们不必在未来的应用程序中提及它们pom.xml
对,即 dependency-reduced-pom.xml
将用作 pom.xml ?
我认为,这是另一个问题,也许应该在另一个线程中。但据我了解,我会在原始 pom.xml 中工作,并且会避免依赖减少 pom(createDependencyReducedPom 为 false)【参考方案2】:
复制自What is the purpose of dependency-reduced-pom.xml generated by the shade plugin?:
好吧,如果你有一个带有 X 依赖项的模块 A,并且遮蔽了一些 它们在一个特定的 JAR(A-shaded.jar)中,那么你就不需要这些了 如果您想依赖 A-shaded.jar 而不是阴影依赖项 A.jar。所以插件创建了一个仅包含 Y 的 pom.xml 非阴影依赖项。
【讨论】:
以上是关于调用 maven 包命令时创建的 `dependency-reduced-pom.xml` 文件是啥?的主要内容,如果未能解决你的问题,请参考以下文章