zte tutorial descarga maven-2

maven-2 - descarga - maven tutorial



Cómo hacer que Maven ejecute la guerra: explotó pero no guerra: guerra (5)

Por lo que sé (todavía soy nuevo para maven) esto no es posible. El único ciclo de vida predeterminado que puede omitir es ''prueba''. Para llegar al despliegue tienes que empacar. Puede leer todo sobre el orden de ejecución del ciclo de vida predeterminado aquí: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

Tengo un Maven pom que usa <packaging>war</packaging> . Pero, en realidad, no quiero compilar el archivo war, solo quiero que se recopilen todas las jarras dependientes y se cree un directorio de implementación completo.

Así que estoy ejecutando la war:exploded objetivo war:exploded para generar el directorio de implementación:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <executions> <execution> <phase>package</phase> <configuration> <webappDirectory>target/${env}/deploy</webappDirectory> <archiveClasses>true</archiveClasses> </configuration> <goals> <goal>exploded</goal> </goals> </execution> </executions> </plugin>

El problema es que el archivo de guerra aún se construye. ¿Existe una forma simple de que <packaging>war</packaging> ejecute la war:exploded objetivo war:exploded lugar de la guerra: objetivo de guerra?

¿O hay otra manera simple de hacer esto?


De acuerdo con los enlaces del ciclo de vida incorporado para el embalaje de guerra en la guerra de fase del paquete: se llama guerra mojo.

Puede llamar a la fase anterior de ''prepararse-paquete'': se realizarán todas las acciones y luego se realizará la guerra de mojo: explotó

mvn prepare-package war:exploded

Los resultados serán los mismos que los tuyos, pero no se creará guerra.


La solución es bastante simple. Debe anular la ejecución predeterminada del complemento de guerra para deshabilitarlo y agregar su propia ejecución (para explotar):

<pluginManagement> <plugins> <plugin><!-- don''t pack the war --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <executions> <execution> <id>default-war</id> <phase>none</phase> </execution> <execution> <id>war-exploded</id> <phase>package</phase> <goals> <goal>exploded</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement>


Me gustaría actualizar a @Michael Wyraz answer y solo incluir la configuración de omisión de instalación en caso de que alguien ejecute mvn clean install build en el nivel superior del proyecto multimodule y uno de submódulo sea aplicación web.

Esto se encuentra dentro del módulo de guerra:

<profiles> <profile> <id>war_explode</id> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>default-war</id> <phase>none</phase> </execution> <execution> <id>war-exploded</id> <phase>package</phase> <goals> <goal>exploded</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <executions> <execution> <id>default-install</id> <phase>none</phase> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </profile> </profiles>

Sin instalación, la creación de omisiones falla al intentar instalar war en la carpeta .m2. El mensaje de error se ve así:

[INFO] --- maven-install-plugin:2.4:install (default-install) @ *** --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-install) on project ***: The packaging for this project did not assign a file to the build artifact -> [Help 1]

Ejecutando mvn clean install -P war_explode con esta configuración (incluida en el perfil de administrador llamado war_explode ) finaliza la compilación sin error.


La única forma en que puedo pensar para hacer lo que quiero es establecer el uso del empaque de pom (o crear un empaque personalizado ) y unir los objetivos requeridos del empaque de guerra a las fases relevantes del ciclo de vida. Si elige el paquete de pom, puede usar definir war: war execution en un perfil para permitirle empaquetarlo, pero necesitará usar el objetivo build-helper-maven-plugin attach-artifact para unir la guerra al pom.

Tenga en cuenta que con este enfoque, si desea utilizar cualquier otro proceso específico de guerra, puede causarle problemas.

Los enlaces del ciclo de vida para el empaquetado de guerra se enumeran en la Introducción al ciclo de vida de compilación (consulte la sección "Enlaces de ciclo de vida predeterminados - Empaquetamiento ejb / ejb3 / jar / par / rar / war").

Para vincular las ejecuciones de plugins relevantes al paquete de pom, lo haría de la siguiente manera:

<build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>process-resources</id> <phase>process-resources</phase> <goals> <goal>resources</goal> </goal> </execution> </executions> </plugin> <plugin> <artifactId>maven-compile-plugin</artifactId> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goal> </execution> </executions> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>process-test-resources</id> <phase>process-test-resources</phase> <goals> <goal>testResources</goal> </goal> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <executions> <execution> <id>test</id> <phase>test</phase> <goals> <goal>test</goal> </goal> </execution> </executions> </plugin> <!-- package not wanted, install and deploy already defined for pom packaging--> <!--define war:war execution in a profile in case it is needed-->