2009-09-25 10 views
18

El uso de Maven plugin de guerra, genero GUERRA que incluye directorio siguiente:¿Cómo excluir pom.xml de la guerra generada por Maven?

 
META-INF 
-- maven 
    -- com.abc.def 
     -- myServlet 
     -- pom.xml 
     -- pom.properties 

En el comunicado, que desea excluir este directorio experto. ¿Cómo puedo hacer eso?

Probé el último maven-war-plugin (2.1-beta-1), tiene la configuración "packagingExcludes", pero no funciona como me gustaría.

¿Alguna sugerencia?

Respuesta

13

Utilizando el paquete de Maven estándar no puede omitir el archivo que yo sepa. Sin embargo, es posible usar el maven-assembly-plugin para construir la guerra, en este caso tiene un control mucho más detallado sobre el contenido del artefacto, y puede omitir el pom.xml.

Sin embargo personalmente he encontrado que es útil guardar el pom.xml con fines de diagnóstico. Puede ser útil saber qué se usó para construir y armar la guerra cuando se trata de descubrir qué está mal con su aplicación.

Actualización: en un extraño punto de sincronicidad a la respuesta de Pascal, acabo de leer en el Archiver reference y parece que esto se puede hacer estableciendo la propiedad addMavenDescriptor en falso. Personalmente, aún así evitaría hacer esto por las razones mencionadas anteriormente. Pero es posible que desee cambiar su aceptación a la respuesta de Pascal.

+0

+1 Gracias Rich por sus comentarios perspicaces sobre todas las cuestiones relacionadas con Maven! :-) Aprendí todas tus respuestas. En este caso, me interesó especialmente el segundo párrafo, más relacionado con las mejores prácticas y la experiencia adquirida. – KLE

+0

Estoy de acuerdo con el propósito del diagnóstico. Sin embargo, tenemos una personalización especial en pom.xml, que revela la estructura del archivo en la máquina de compilación. Por supuesto, no queremos exponer esa información a clientes o cualquier usuario. Voy a probar el complemento maven-assembly. ¡Gracias! – user179080

+1

Tiendo a estar de acuerdo con Rich (me resulta útil también para guardar estos archivos), pero creo que Maven Archiver proporciona una opción de configuración que permite evitar el empaquetado de estos archivos. Ver mi respuesta a continuación. –

0

Poner una carpeta META-INF en un directorio de recursos o en la raíz de su directorio de origen destruirá el contenido de META-INF creado por Maven. Para los archivos WAR, poner un META-INF en su directorio de contenido web hará lo mismo.

Agregando otro contenido a esa costumbre META-INF anulará lo que maven creará.

+0

Puse una carpeta META-INF en el directorio de recursos, no solo se insertó el directorio maven /, sino que también mi archivo MANIFEST.MF fue sobrescrito. Estoy usando maven-war-plugin, versión 2.0. Probé la versión 2.1.beta-1, sigue siendo la misma. – user179080

37

No estoy seguro, pero creo que el Maven Archiver (que es utilizado principalmente por los complementos para manejar el embalaje) se puede configurar para lograr esto.

Sobre el elemento <addMavenDescriptor>, el Maven Archiver Reference dice:

Si el archivo generado contendrá estos dos archivos Maven:

  • El archivo POM, que se encuentra en el archivo de META-INF/maven/${groupId}/${artifactId}/pom.xml
  • Un archivo pom.properties, ubicado en el archivo en META-INF/maven/${groupId}/${artifactId}/pom.properties

El valor predeterminado es verdadero.

Así un pom configurado como esto debe hacer el truco:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0</version> 
     <configuration> 
      <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
      </archive> 
     </configuration> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 
+0

+1, por coincidencia, estaba a punto de editar mi respuesta leyendo un poco sobre el archivador para esta pregunta: http://stackoverflow.com/questions/1510071/ –

+0

Bueno, acabo de descubrir esto mientras investigaba el archivador para la pregunta manifiesta también :) Si quiere actualizar su respuesta, hágamelo saber. –

+0

Actualicé mi respuesta y recomendé a OP que aceptara la tuya, y luego, un error me devolvió el voto. Encantador –

0
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <warSourceExcludes>pom.xml</warSourceExcludes> 
    </configuration> 
</plugin> 

o

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <warSourceExcludes>here/there/everywhere/a/pom.xml</warSourceExcludes> 
    </configuration> 
</plugin> 
Cuestiones relacionadas