2011-01-28 5 views
18

La fase package de un proyecto con el empaquetado war, se prepara una guerra explotó en la carpeta target y paquetes de esto en la final war -file.punto de ejecución entre prepare-paquete y paquete en Maven construir procesos

¿Es posible realizar algunos cambios, editar archivos, eliminar archivos y así sucesivamente, entre prepare-package y package fases? Estoy buscando un punto de extensión (Maven execution-phase) donde los recursos ya están copiados y en la estructura de guerra explosionada.

  1. [fase experto] recursos de copia y explotan a target/{finalName}.
  2. [personalizado] Realice algunos cambios personalizados complejos (por ejemplo, implementado con maven-antrun).
  3. [fase maven] Empaqueta las cosas cambiadas en el war final.

Pensé que esto podría ser posible entre las fases prepare-package y package. Lamentablemente, después del prepare-package no hay guerra explosiva disponible para cambiar y empaquetar más tarde.

¿Puede darme una pista de cómo lograr esto? Muchas gracias.

+0

Maven war plugin puede excluir archivos y filtrarlos también. Tal vez sus necesidades son más complejas? – Raghuram

+0

Las necesidades son más complejas, sí. No puedo usar esta característica, no es lo suficientemente poderoso. – codevour

+0

Tendrá que explicar un poco más cuáles son sus cambios [personalizados]. Dependiendo de lo que sean, podríamos encontrar diferentes soluciones a su problema. – SaM

Respuesta

15

Esta configuración llama a la meta exploded en la fase prepare-package. Esto le da la oportunidad de trabajar en el directorio de guerra explotado en las siguientes definiciones de complemento, p. maven-antrun.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <executions> 
    <execution> 
     <id>prepare-war</id> 
     <phase>prepare-package</phase> 
     <goals> 
     <goal>exploded</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
+0

Lo siento, no profundicé en eso, finalmente implementé mi propio paquete de guerra MOJO (escribí mi propio plugin maven) y reescribí el ciclo de vida para eso. – codevour

+1

¿Cómo hiciste que maven-antrun se ejecutara después de la tarea de preparar guerra? Estoy usando el plugin exec y sigue ejecutándose antes. – HaxElit

+1

Esto funciona inicialmente, pero los cambios que hago en el directorio de guerra explotado se sobrescriben porque maven-war-plugin se ejecuta por segunda vez. Recrea el directorio de guerra explotado con los archivos originales antes de empaquetar el archivo war.De todos modos hay que configurarlo para que la segunda vez que se ejecute, maven-war-plugin solo empaquetará la guerra explotada en un archivo de guerra. – Nathan

1

Me parece que debe vincular la tarea antrun a la fase de preparación del paquete, porque en este punto los recursos ya se han procesado, vea Lifecycle Reference.

Cuestiones relacionadas