问题
Is dependency-reduced-pom.xml
created by Maven shade plugin automatically used in projects that depends on the uberjar (instead of the ordinary pom.xml
)?
Asking this after reading a number of dependency-reduced-pom.xml related questions and haven't founding the answer:
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:
The dependency-reduced-pom.xml
is generated at build time into ${basedir}
of the project. This file is a temporary file that is only used for packaging into the shaded jar. Quoting the documentation of the createDependencyReducedPom attribute:
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<dependencies>
section of the generated POM. The reduced POM will be nameddependency-reduced-pom.xml
and is stored into the same directory as the shaded artifact. Unless you also specifydependencyReducedPomLocation
, the plugin will create a temporary file nameddependency-reduced-pom.xml
in the project basedir.
To make it clear, after the maven-shade-plugin
has run:
- your initial POM will be left unchanged;
- a temporary file that you can completely ignore named
dependency-reduced-pom.xml
will have been generated inside the root folder (this is considered an open issue with this plugin); - the shaded artifact will contain your initial POM unchanged inside the
META-INF
directory and not the reduced POM (this is not really important but better mention it - there was an issue about this that was closed automatically: MSHADE-36); - the POM that will be deployed is the reduced POM;
- the shaded artifact will be by default the main artifact of the project.
来源:https://stackoverflow.com/questions/35154717/is-dependency-reduced-pom-xml-automatically-used-instead-of-pom-xml