2010-04-07 10 views
17

Durante semanas, he estado luchando con maven, haciendo que implemente nuestro proyecto "correctamente".¿Cómo elimino el plugin de ensamblaje de maven omitiendo archivos que ya están agregados? ¿O permite sobrescribir?

casi he terminado, pero tengo un pequeño problema persistente:

Cuando utilizo el plugin ensamblaje experto con el objetivo de "directorio" como en

mvn assembly:directory

recibo muchos consola una salida como la siguiente:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

he escrito mi propia asamblea descriptor t El sombrero básicamente copia varios FileSets en varios subdirectorios dentro de nuestro directorio de implementación. Los mensajes como los anteriores aparecen cuando un archivo de un FileSet se copia a una ubicación en la que otro FileSet ya ha creado la estructura de directorios básica (y algunos archivos "predeterminados" que pueden sobrescribirse).

lo tanto, estoy teniendo un tiempo difícil averiguar:

¿Cómo ya sea 1) suprimir estos mensajes (pero sólo el "ya añadido" mensajes) o 2) permitir sobrescribir?

Respuesta

12

Los mensajes de información provienen del plexo Archiver. Hay un informe de error abierto sobre esta cuestión:

http://jira.codehaus.org/browse/PLXCOMP-129

+1

Actualicé a la última versión de maven-assembly-plugin lo arregló para mí. – GuiSim

+2

@GuiSim gracias, funcionó para mí. Usé la versión 2.5.5. https://maven.apache.org/plugins/maven-assembly-plugin/usage.html – shashaDenovo

1

si entiendo su pregunta correcta que debe utilizar el maven-dependency plugin para copiar archivos/sobrescribir en lugar de utilizar el plugin de montaje ...

+0

Gracias por su respuesta. El complemento maven-dependency-plugin no parece ser una buena opción para mis necesidades. De hecho, lo intenté hace unas semanas y, después de indagar, descubrí que está más orientado hacia la copia de artefactos (como JUnit) que los conjuntos de archivos. Parece que el ensamblado: el objetivo del directorio es la mejor opción para mover (ensamblar) conjuntos de archivos a un directorio de salida. Por lo que sé, el plugin de ensamblaje es para cuando quieres agrupar elementos en un solo lugar, generalmente para comprimir. En este momento, mi único problema es que no puedo entender cómo suprimir/evitar los mensajes "ya agregados". – gMale

+0

Hm..the maven-dependency-plugin (http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html) parecía ser exactamente lo que necesita (tiene opciones de sobreescritura, etc.) ... copiar artefactos (archivos) en una ubicación particular ... Puede ser una buena idea echar un vistazo al maven-cargo-plugin (http://cargo.codehaus.org/Maven2+plugin), causa puede iniciar/detener/implementar en tomcat, etc. BTW: ¿Qué versión del plugin de ensamblaje usa? Puede actualizarse a la más reciente. – khmarbaise

+0

Esto no resuelve exactamente mi problema pero aceptaré su respuesta ya que no tengo otros. Es el pensamiento lo que cuenta, ¿verdad? lol – gMale

2

Probablemente es mejor utilizar maven-recursos-plugin con el objetivo de copia de recursos para reunir los directorios que necesita en un solo lugar. Cree una ejecución para su estructura de directorio básica y agregue las ejecuciones posteriores para las partes personalizadas. Establecer la propiedad de sobrescritura del objetivo en true asegurará que los archivos personalizados sobrescribirán los valores predeterminados.

Luego, en las descripciones de su ensamblaje use el conjunto de archivos que acaba de crear.

1

Maven 3.0.4:

sigo teniendo estos mensajes al hacer un solo frasco o fuentes combinadas para su distribución. http://jira.codehaus.org/browse/PLXCOMP-129 parece que no está en maven.

Mi solución consiste en utilizar varios patrones de exclusión y, en particular,% regex [..] para carpetas. No sé cuán estable o general es esto, y claramente es necesario mantenerlo. Sin embargo, nos encontramos en la situación en la que recibimos tantos mensajes que no podemos ver cuando aparece un mensaje real sobre el que tenemos que hacer algo.

Omitiendo el AVISO, LICENCIA - Puse las versiones de texto combinadas correctas más adelante en el conjunto. Los parciales de las dependencias no son lo suficientemente buenos de todos modos.

La coincidencia del nombre de la carpeta excluye todo, no la carpeta en sí. Las carpetas aparecen en la salida y no hay mensajes de nivel de INFO "saltando".

<unpackOptions> 
    <excludes> 
    <exclude>**/NOTICE*</exclude> 
    <exclude>**/LICENSE*</exclude> 
    <exclude>**/DEPENDENCIES*</exclude> 
    <exclude>META-INF/**</exclude> 
    <!-- Exclude folders - this removes "skipping" messages --> 
    <exclude>%regex[.*/]</exclude> 
    </excludes> 
</unpackOptions> 
9

Se ha corregido el error Plexus mencionado por vocaro.El uso de maven-assembly-plugin con la versión 2.4 (el más alto al momento de escribir) no imprime los mensajes detallados.

+0

Esto solucionó este problema molesto para mí. ¡Gracias! –

2
  1. Promueve a Maven 3.1.x o superior - ver http://maven.apache.org/maven-logging.html

    La distribución estándar Maven, desde Maven 3.1.0 en adelante, utiliza la API SLF4J para iniciar sesión en combinación con la aplicación simple SLF4J.

  2. Ahora con simplelogger tenemos un control detallado sobre los mensajes de registro. Para identificar qué está causando registrador de los mensajes no deseados, editar MAVEN_HOME/conf/registro/simplelogger.properties y cambiar lo siguiente:

    org.slf4j.simpleLogger.showLogName = true

  3. Observar la basura no deseado en su construcción salida:

    [INFO] org.codehaus.plexus.archiver.jar.JarArchiver - META-INF/MANIFEST.MF already added, skipping 
    
  4. vuelta en simplelogger.properties, reducir el nivel de registro del registrador (s) infractor por nombre de la clase (también establecer showLogName volver a falso)

    org.slf4j.simp leLogger.log.org.codehaus.plexus.archiver.jar.JarArchiver = advertir

+0

Esta es la mejor respuesta a esta pregunta. ¡Gracias! – codeturner

Cuestiones relacionadas