调用 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` 文件是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Maven导出Project依赖的jar包

如何把jar包生成maven工程

使用Eclipse的Maven插件时maven dependency找不到包的解决办法

maven工程中如何添加jar

maven怎么添加第三方jar包

怎么把jar包加入到maven dependencies