Maven shade插件将dependency-reduced-pom.xml添加到基目录

时间:2012-07-03 15:25:24

标签: java maven maven-shade-plugin

maven shade插件正在创建一个名为 dependency-reduced-pom.xml 的文件,还有 artifactname-shaded.jar 并将它们放在基本目录中。

这是一个错误吗?应该在目标目录中。任何解决方法?

5 个答案:

答案 0 :(得分:55)

您可以通过将createDependencyReducedPom设置为false来避免创建它。

e.g。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>${maven-shade-plugin.version}</version>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    ....
    ....
</plugin>

请参阅more detail from apache

enter image description here

答案 1 :(得分:19)

基于 bmargulies '回答以及他对 Xv。的回答的评论,我决定将依赖项减少的POM配置为输出到target/ ,在我的VCS中已被忽略。

为此,我只是将dependencyReducedPomLocation元素添加到插件的configuration元素中,即

<configuration>
  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
  (...)
</configuration>

答案 2 :(得分:8)

请参阅https://issues.apache.org/jira/browse/MSHADE-121以及https://issues.apache.org/jira/browse/MSHADE-124

可以选择将d-r-p移动到其他地方,但您可能不喜欢这些后果。

你对阴影罐子的看法是错误的,它总是以目标/结束,除非你把它移到其他地方。

答案 3 :(得分:3)

您可以使用旧版本的插件。 maven-shade-plugin 1.7版写入/ target。

从1.7.1版开始,依赖性降低的pom.xml被写入basedir。请参阅问题MSHADE-124,了解其完成的原因以及后果。如果您尝试设置 dependencyReducedPomLocation ,则可能会遇到生成网站的问题 - 打开问题MSHADE-145

答案 4 :(得分:0)

http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html上的文档说错了:

  

createDependencyReducedPom boolean - 标记是否生成   简化了阴影工件的POM。如果设置为true,依赖项   已被包含在超级JAR中的将被删除    生成的POM的一部分。减少的POM将是   命名为dependency-reduced-pom.xml并存储在同一目录中   作为阴影神器。除非你也指明   dependencyReducedPomLocation,该插件将创建一个临时文件   在项目basedir中命名dependency-reduced-pom.xml。默认值   是:真的。

dependency-reduced-pom.xml not 存储在与着色工件(目标目录)相同的目录中......它实际上是在基本目录中生成的,而不是目标