plugin example deployment maven-2 maven-assembly-plugin maven-release-plugin

deployment - maven release plugin example



Despliegue del paquete de ensamblaje con maven-release-plugin (2)

La implementación de archivos no es parte del complemento de lanzamiento, sino del complemento de despliegue (el lanzamiento no implementa elementos en ningún lugar, pero puede configurar el complemento de despliegue para que se llame durante un lanzamiento).

Normalmente, el complemento de implementación implementará todos los artefactos en el repositorio remoto, pero los ensamblajes no son artefactos; Maven no puede usar los archivos .tar.gz en su repositorio de ninguna manera, por lo que no tiene sentido implementarlos en primer lugar.

Si insiste en copiar archivos inútiles en el repositorio, debe usar deploy:deploy-file ( ver los documentos ) para implementar un archivo manualmente y configurar el complemento con una ejecución para invocarlo durante el paso de la versión. Pero sigo desaconsejándolo.

Lo que probablemente está buscando es una forma de cargar un ensamblaje en algún lugar automáticamente. No estoy al tanto de un complemento que hace esto.

Usamos Hudson y el maven-release-plugin para hacer las compilaciones de lanzamiento. Ahora tengo un proyecto que contiene un assembly que reúne todos los componentes necesarios y luego los empaqueta en un paquete .tar.gz con la estructura de directorios deseada.

Ahora estoy tratando de obtener el complemento de lanzamiento para implementar este paquete en nuestro repositorio de Maven durante el lanzamiento: cumplir el objetivo, pero solo se implementan las cosas estándar (fuentes, javadoc, POM).

Ya he vinculado el objetivo del ensamblaje a la fase del paquete maven, y el .tar.gz se genera durante el lanzamiento, pero no se ha cargado en el repositorio. ¿Alguna pista de lo que estoy haciendo mal aquí?

Aquí está la configuración de montaje-complemento:

<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-4</version> <configuration> <descriptors> <descriptor>src/main/assembly/distribution.xml</descriptor> </descriptors> <finalName>${pom.artifactId}-${pom.version}</finalName> <appendAssemblyId>false</appendAssemblyId> <tarLongFileMode>warn</tarLongFileMode> </configuration> <executions> <execution> <id>dist-assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin>

El comando que ejecuto para construir una versión es

mvn release:prepare release:perform release:clean


Mientras tanto, encontré 2 formas de hacer lo que quería.

El complemento maven-build-helper permite agregar entradas adicionales a la lista de artefactos que se deben implementar:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <id>attach-distribution</id> <phase>package</phase> <goals> <goal>attach-artifact</goal> </goals> <configuration> <artifacts> <artifact> <file>target/${pom.artifactId}-${pom.version}.tar.gz</file> <type>tar.gz</type> </artifact> </artifacts> </configuration> </execution> </executions> </plugin>

El otro es tan simple como parece y alguien en la lista de correo de usuarios expertos lo señaló. Simplemente use el ensamblaje: un solo objetivo en lugar del ensamblaje: ensamblaje. De esta manera, el artefacto generado se carga en el repositorio durante la fase de implementación.

<execution> <id>dist-assembly</id> <phase>package</phase> <goals> <goal>single</goal> <!-- that''s all :) --> </goals> </execution>