shade plugin exclude example dependency java maven maven-shade-plugin

java - exclude - maven shade plugin maven



Plugin de sombra Maven aƱadiendo dependency-reduced-pom.xml al directorio base (5)

El plugin maven shade está creando un archivo llamado dependency-reduced-pom.xml y también artifactname-shaded.jar y colocándolos en el directorio base.

¿Es esto un error? Debe estar en el directorio de destino. Cualquier solución?


Basado en la respuesta de bmargulies y su comentario en Xv. En respuesta, decidí configurar el POM con dependencia reducida para enviar a target/ , que ya se ha ignorado en mi VCS.

Para hacer eso, acabo de agregar el elemento dependencyReducedPomLocation elemento de configuration del complemento, es decir,

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



Podría usar una versión anterior del complemento. La versión 1.7 del plugin maven-shade escribe en / target.

Desde la versión 1.7.1, pom.xml con dependencia reducida se escribe en basedir. Consulte el problema MSHADE-124 por algunos motivos por los que se hizo y cuáles son las consecuencias. Si intenta configurar depencyReducedPomLocation , es probable que tenga problemas para generar el sitio - tema abierto MSHADE-145 .


la documentación en http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html es incorrecta cuando dice:

createDependencyReducedPom boolean: marca si se debe generar un POM simplificado para el artefacto sombreado. Si se establece en verdadero, las dependencias que se han incluido en el archivo JAR de uber se eliminarán de la sección del POM generado. El POM reducido se denominará dependency-reduced-pom.xml y se almacena en el mismo directorio que el artefacto sombreado. A menos que también especifique depencyReducedPomLocation, el complemento creará un archivo temporal denominado dependency-reduced-pom.xml en la base de proyectos. El valor predeterminado es: verdadero.

el archivo dependence-reduced-pom.xml no se almacena en el mismo directorio que el artefacto sombreado (directorio de destino) ... de hecho se genera en el directorio base, no en el destino


Puede evitar que se cree estableciendo createDependencyReducedPom en false.

p.ej

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

Ver más detalles de apache