2012-06-22 14 views
5

Tengo un requisito muy específico de nuestra infraestructura de compilación para copiar algunos contenidos de otra dependencia de JAR a una subcarpeta específica de mi aplicación web. Estamos usando maven-assembly-plugin, y una forma natural de hacerlo es usar <dependencySet> junto con <unpackOptions>.Ensamblaje de Maven: copia solo el archivo de la subcarpeta al extraer del archivo

El ejemplo de código (en el descriptor de montaje) Tengo miradas de la siguiente manera:

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my.group:artifact:jar</include> 
     </includes> 
     <unpackOptions> 
      <includes> 
       <include>subfolder/config.xml</include> 
      </includes> 
     </unpackOptions> 
     <outputDirectory>WEB-INF/otherfolder</outputDirectory> 
    </dependencySet> 

El problema es que no puedo encontrar la manera de especificar que sólo quiero copiar un solo archivo a artifact.jar/subfolder/config.xml un objetivo WEB-INF/otherfolder. El resultado real es WEB-INF/otherfolder/subfolder/config.xml. Como puede ver, /subfolder se agrega a una ruta final. ¿Hay alguna forma de cambiar la expresión <include> para que /subfolder no se anexe?

¡Gracias de antemano!

+0

¿Ha intentado quitar la otra carpeta del directorio de salida? – khmarbaise

+0

@khmarbaise En ese caso, obtendré WEB-INF/subfolder/config.xml. Pero el resultado esperado es WEB-INF/otherfolder/config.xml –

+0

pruebe **/config.xml y vea lo que sucede ... – om39a

Respuesta

2

La navegación a través de la fuente revela que esto no es posible a través del complemento maven-assembly. Se incluye todo lo que se especifica en el descriptor de ensamblaje, y luego pasa esta información al archivador de Plexus, que se utiliza en varias etapas. Los patrones de inclusión también se pasan al archivador Plexus, y luego obviamente se 'desempaqueta' la estructura del directorio de conservación.

+0

Gracias por los comentarios. – Puce

1

¿Alguna vez ha pensado en el maven-dependency-plugin que tiene un buen soporte para desempaquetar archivos.

+0

Lo he pensado, y lo reconsideraré nuevamente, ya que limpiaré los scripts de compilación. Pero, para ser honesto, esta no es una respuesta a una pregunta. –

0

Como @khmarbaise indica, la solución radica en la combinación de la dependencia-plugin con el montaje-plugin:

  • En la puesta en fase de paquete por el desembalaje de las dependencias que necesita en un directorio de destino
  • en el paquete (en adelante pom) use assembly para extraer archivos específicos de ese directorio en su artefacto
Cuestiones relacionadas