Maven shade plugin adding dependency-reduced-pom.xml to base directory

后端 未结 5 1976
梦如初夏
梦如初夏 2020-12-13 23:21

The maven shade plugin is creating a file called dependency-reduced-pom.xml and also artifactname-shaded.jar and placing them in the base directory.

<
相关标签:
5条回答
  • 2020-12-13 23:48

    See https://issues.apache.org/jira/browse/MSHADE-121, and also https://issues.apache.org/jira/browse/MSHADE-124.

    There is an option to move the d-r-p to elsewhere, but you may not like the consequences.

    You are wrong about the -shaded jar, it always ends up in target/ unless you move it elsewhere.

    0 讨论(0)
  • 2020-12-13 23:50

    You could use an old version of the plugin. Version 1.7 of the maven-shade-plugin writes to /target.

    Since version 1.7.1, dependency-reduced pom.xml is written to basedir. See the issue MSHADE-124 for some reasons why it was done and what the consequences are. If you try setting dependencyReducedPomLocation, you will likely run into problems generating the site - open issue MSHADE-145.

    0 讨论(0)
  • 2020-12-13 23:52

    the documentation on http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html is incorrect when it says:

    createDependencyReducedPom boolean - Flag whether to generate a simplified POM for the shaded artifact. If set to true, dependencies that have been included into the uber JAR will be removed from the section of the generated POM. The reduced POM will be named dependency-reduced-pom.xml and is stored into the same directory as the shaded artifact. Unless you also specify dependencyReducedPomLocation, the plugin will create a temporary file named dependency-reduced-pom.xml in the project basedir. Default value is: true.

    the dependency-reduced-pom.xml is not stored in the same directory as the shaded artifact (target directory) ... it is in fact generated in the base directory, not target

    0 讨论(0)
  • 2020-12-13 23:59

    You can avoid having it created by setting createDependencyReducedPom to 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>
    

    See more detail from apache

    enter image description here

    0 讨论(0)
  • 2020-12-13 23:59

    Based on bmargulies' answer and his comment on Xv.'s answer, I decided to configure the dependency-reduced POM to be output to target/, which is already ignored in my VCS.

    To do that, I just added the dependencyReducedPomLocation element to the configuration element of the plugin, i.e.

    <configuration>
      <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
      (...)
    </configuration>
    
    0 讨论(0)
提交回复
热议问题