Implementación de paquete de montaje con maven-liberación-plugin
-
19-09-2019 - |
Pregunta
Utilizamos Hudson y el experto de liberación-plugin para hacer el las versiones de lanzamiento. Ahora tengo un proyecto que contiene una href="http://maven.apache.org/plugins/maven-assembly-plugin/" montaje rel="noreferrer">
Ahora estoy tratando de conseguir la liberación-plugin para implementar este paquete a nuestro repositorio Maven durante la liberación: realizar la meta, pero sólo el material estándar (fuentes, javadoc, POM) se despliegan Ya he atado el objetivo conjunto a la fase de paquete experto, y el .tar.gz Obtiene construir durante la liberación, pero no se han subido al repositorio. ¿Alguna pista de lo que estoy haciendo mal aquí? Aquí está la configuración de montaje-plugin: El comando corro para construir una liberación es <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>
mvn release:prepare release:perform release:clean
Solución
Mientras tanto, me encontré con 2 formas de hacer lo que quería.
El experto-build-helper-plugin permite añadir entradas adicionales a la lista de objetos que deben ser desplegado:
<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 se pone y alguien en la lista de correo del usuario experto señaló esto. Un uso correcto del conjunto: un solo objetivo en lugar de asssembly: montaje. De esta manera el artefacto generado se cargará al repositorio durante la fase de implementación.
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal> <!-- that's all :) -->
</goals>
</execution>
Otros consejos
La implementación de archivos no es parte de la versión plug-in, pero el plugin de despliegue (liberación no despliega las cosas por sí mismo en cualquier lugar, pero se puede configurar el despliegue de plugins para ser llamado en caso de liberación).
Normalmente, el plugin implementar desplegará todos los artefactos al repositorio remoto, pero asambleas no son artefactos; Maven no puede utilizar archivos .tar.gz en su repositorio de ninguna manera, por lo que no tiene sentido para desplegarlos en el primer lugar.
Si usted insiste para copiar archivos inútiles en el repositorio, debe utilizar deploy:deploy-file
( ver los documentos ) para desplegar un archivo manualmente y configurar el plugin con una ejecución para invocar durante la etapa de liberación. Pero todavía aconsejo en contra de ella.
Lo que probablemente está buscando una manera de cargar un ensamblado en algún lugar de forma automática. No estoy al tanto de un plugin que hace esto.