2012-07-03 11 views

Respuesta

50

Puede evitar que se cree estableciendo createDependencyReducedPom en falso.

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 more detail from apache

enter image description here

+11

Si lo desactivas, la cosa que construyas seguirá teniendo todas las dependencias fusionadas enumeradas como dependencias. – bmargulies

7

Véase https://issues.apache.org/jira/browse/MSHADE-121, y también https://issues.apache.org/jira/browse/MSHADE-124.

Hay una opción para mover el d-r-p a otro lugar, pero puede que no te gusten las consecuencias.

Se equivoca con respecto al frasco sombreado, siempre termina en destino/a menos que lo mueva a otro lugar.

+1

¿podría explicarnos qué deberíamos hacer con este pom generado? – Cristiano

+1

Nada. Añádalo a su archivo .gitignore o configure svn: ignore en él. Maven lo hace para que pueda incluirlo en el tarro sombreado. – bmargulies

+2

¿A qué te refieres con 'Puede que no te gusten las consecuencias'? ¿Cuáles son las consecuencias negativas? – Gili

1

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

createDependencyReducedPom booleano - Bandera de si se debe generar un POM simplificado para el artefacto a la sombra. 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 será denominado dependency-reduced-pom.xml y se almacena en el mismo directorio como el artefacto sombreado. A menos que también especifique dependencyReducedPomLocation, el complemento creará un archivo temporal llamado dependency-reduced-pom.xml en la base de proyectos. El valor predeterminado es: verdadero.

la reducción de la dependencia--pom.xml es no almacenado en el mismo directorio que el artefacto sombreado (directorio de destino) ... es de hecho generado en el directorio de base, no orientar

+4

escriben (incluso en su respuesta puede ver): "el complemento creará un archivo temporal llamado dependency-reduced-pom.xml en el proyecto basedir" – OhadR

19

Basado en bmargulies 'respuesta y su comentario en Xv. La respuesta de, decidí configurar el POM dependiente de la reducción para que salga a target/, que ya se ha ignorado en mi VCS.

Para hacer eso, me acaba de agregar el elemento dependencyReducedPomLocation al elemento configuration del plug-in, es decir

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

Bevare de esto, de la documentación del complemento "Dónde poner la dependencia reducida Nota: si se establece un valor para este parámetro con un directorio que no sea $ {basedir}, se cambiará el valor de $ {basedir} para todas las ejecuciones posteriores a la ejecución del sombreado. Esto no suele ser lo que se desea. problema abierto con este complemento ". –

3

usted podría utilizar una versión antigua del plugin. La versión 1.7 del plugin maven-shade escribe en/target.

Desde la versión 1.7.1, pom.xml dependiente de la reducción se escribe en basedir. Consulte el problema MSHADE-124 por algunas razones por las que se hizo y cuáles son las consecuencias.Si intenta configurar dependencyReducedPomLocation, es probable que tenga problemas para generar el sitio - número abierto MSHADE-145.

Cuestiones relacionadas