2012-01-16 14 views
13

Estoy usando maven-shade-plugin para un proyecto maven simple, el plugin incluye todas las dependencias con éxito en un jar final "sombreado". El proceso funciona bien todo el tiempo y produce exactamente lo que necesito.Advertencias superfluas cuando usas maven-shade-plugin

Cuando se ejecuta la "primera" vez (después de un clean), el complemento es silencioso y produce muy poca salida. Sin embargo, cuando vuelve a ejecutar (sin un clean desde la última compilación), hay muchos mensajes de advertencia como este;

[WARNING] We have a duplicate package/a/b/foo.class 
[WARNING] We have a duplicate package/c/d/bar.class 

Estos son solo mensajes de advertencia y el artefacto final funciona bien.

Mi pregunta es simple: ¿cómo puedo solucionar de forma segura o suprimir estos mensajes de advertencia sin tener que ejecutar primero un clean?


nota: Una posible solución sería la de pasar a la experta en montaje-plugin, pero preferiría no hacerlo debido a la configuración de experto-sombra-plugin es muy agradable y sencillo .

+1

Supongo que los duplicados informados son todas las clases de dependencia, ¿verdad? En ese caso, lo más probable es que primero se extraigan a alguna carpeta, por lo que es posible que desee agregar un paso de limpieza para esas carpetas antes o después de la fase del paquete (dependiendo de si necesita esas clases entre compilaciones). – Thomas

+0

Tengo la misma pregunta que la anterior ... cómo suprimir las advertencias. En mi caso, estoy incluyendo dependencias de numerosos paquetes de paquetes de Spring sobre los cuales no tengo control, es decir, no puedo "limpiarlos" antes. –

+0

¡Este es exactamente mi problema! [¡Oh querido!] (Http://xkcd.com/979/) – plasma147

Respuesta

10

Esto se debe a que está sombreando los archivos en un contenedor ya sombreado.

La primera vez que ejecuta el paquete después de una limpieza, creará el contenedor. La segunda vez que lo ejecuta, no molesta ya que el contenedor ya existe.

Desde la perspectiva de los complementos de sombra, no se sabe que esto ya se ha sombreado, por lo que solo intenta agregar las clases nuevamente.

Podemos forzar experto para crear el cada frasco configurando el plugin jar:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <forceCreation>true</forceCreation> 
    </configuration> 
</plugin> 

Y esto funciona para mí. O eso o simplemente haga una instalación limpia

+0

Gracias por este consejo, molesto, pero funciona. –

+0

Gracias por esto. ¿Hay alguna otra forma de obtener el complemento para usar el contenedor 'original'? No entiendo la dinámica entre 'maven-jar-plugin' y' maven-shade-plugin' –

Cuestiones relacionadas