¿Es posible evitar implementar el artefacto que está construido de acuerdo con el empaque del proyecto durante 'deploy: deploy' processing?Maven: evite desplegar artefactos implicados en el paquete del proyecto durante el ciclo de vida de construcción estándar
quiero decir lo siguiente:
- supongamos que tenemos un 'pom.xml' para la aplicación web y definir el tipo de envase como 'guerra';
- queremos ensamblar '* .war' artefacto o '* .zip' que contiene nuestra aplicación, así como un contenedor de servlet;
- queremos desplegar solo ese '* .zip' artefacto durante 'deploy: deploy' procesamiento;
I.e. Quiero ser capaz de ejecutar 'mvn despliegan' y tiene los siguientes resultados:
- 'myapp.war' se construye;
- 'myapp-standalone.zip' está construido;
- 'myapp-standalone.zip' se implementa en el repositorio remoto de destino (en cuenta que yo no me molesto si 'myapp.war' se instala en el repositorio local aquí);
yo nos registramos 'war:war documentation' y encontró parámetro 'primaryArtifact'. Sin embargo, menciona solo el repositorio local.
He intentado lo siguiente POM pero todavía despliega ya sea '* .war' o '* .zip' al repositorio remoto:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mygroup</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- dependencies go here -->
</dependencies>
<build>
<plugins>
<! -- plugins like 'compiler' etc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<primaryArtifact>false</primaryArtifact>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>myapp-standalone</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/standalone.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<-- target repository information -->
</repository>
<snapshotRepository>
<-- target repository information -->
</snapshotRepository>
</distributionManagement>
</project>
Parece que puedo conseguir el comportamiento deseado a través de la que se declara envases proyecto como 'pom' y configurar manualmente todos los mojos que implica 'guerra' envases ('recursos: los recursos de, 'compilador: compilar', 'recursos': testResources, 'compilador: testCompile', 'infalible: Prueba', 'guerra: la guerra', 'instalar: instalar', 'desplegar: desplegar'). Sin embargo, eso haría que el POM fuera bastante detallado y me gustaría evitarlo.
Por lo que tengo entendido, la forma de Maven es tener siempre un artefacto implícito en el tipo de empaquetamiento del proyecto como uno de los artefactos del proyecto. Pero no está claro qué se espera que haga el usuario de Maven si quiere obtener un artefacto que no coincida con ningún tipo de paquete predeterminado (por ejemplo, el archivo '* .zip' único).
¿Alguna idea?
Regards, Denis
considerar la adición de Maven para las etiquetas – pstanton