是自动使用dependency-reduced-pom.xml而不是pom.xml吗?

时间:2016-02-02 13:22:56

标签: maven maven-3 maven-shade-plugin

Maven shade plugin 自动创建的dependency-reduced-pom.xml是否在依赖于uberjar(而非普通pom.xml)的项目中使用?

在阅读了一些与dependency-reduced-pom.xml相关的问题并且没有找到答案后问这个问题:

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?

What is `dependency-reduced-pom.xml` file which created when calling maven package command?

1 个答案:

答案 0 :(得分:22)

dependency-reduced-pom.xml在构建时生成到项目的${basedir}。此文件是一个临时文件,仅用于打包到着色jar中。引用createDependencyReducedPom属性的文档:

  

标记是否为着色工件生成简化的POM。如果设置为true,则将从生成的POM的<dependencies>部分中删除已包含在uber JAR中的依赖项。缩减的POM将命名为dependency-reduced-pom.xml,并且存储在与着色工件相同的目录中。除非您还指定dependencyReducedPomLocation,否则插件会在项目基础上创建名为dependency-reduced-pom.xml临时文件

要明确,maven-shade-plugin运行后

  • 您的初始POM将保持不变;
  • 您可以完全忽略名为dependency-reduced-pom.xml的临时文件将在根文件夹(this is considered an open issue with this plugin)内生成;
  • 阴影工件将在META-INF目录中包含您的初始POM,而不是缩小的POM(这不是很重要但更好地提及它 - 有一个关于此的问题自动关闭:{{3 }});
  • 将部署的POM是减少的POM;
  • 阴影工件默认为项目的主要工件。