22

Usamos Hudson y maven-release-plugin para realizar 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.Despliegue del paquete de ensamblaje con maven-release-plugin

Ahora intento que el lanzamiento-complemento despliegue este paquete en nuestro repositorio de Maven durante el lanzamiento: realice el objetivo, pero solo se implementan las cosas estándar (fuentes, javadoc, POM).

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

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

<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 corro para construir una liberación es

mvn release:prepare release:perform release:clean 
+0

Tal vez si usted nos muestra el código, o código ofuscado que podría ser capaz de ayudarle a – ant

Respuesta

33

Mientras tanto, encontré 2 maneras 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 experta fácil señaló esto. Uso simple del conjunto: objetivo único en lugar de montaje: montaje. De esta forma, el artefacto generado se carga en el repositorio durante la fase de despliegue.

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

Es una pena que el complemento no te permita volver a definir el ID del artefacto – Adam

1

la distribución de archivos no es parte de la versión plug-in, pero del plugin de despliegue (release no implementa cosas en ninguna parte por sí mismo, pero puede configurar el complemento deploy para llamar durante una versión).

Normalmente, el complemento deploy desplegará todos los artefactos en el repositorio remoto pero los ensamblados no son artefactos; Maven no puede usar los archivos .tar.gz en su repositorio de ninguna manera, por lo que no tiene sentido desplegarlos en primer lugar.

Si insiste en copiar archivos inútiles en el repositorio, debe usar deploy:deploy-file (see the docs) para desplegar un archivo manualmente y configurar el complemento con una ejecución para invocarlo durante el paso de publicación. Pero aún así desaconsejo.

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

+0

Thx, que era la forma en que estaba en el momento, aunque no he conseguido que funcione en este momento. Pero de acuerdo con todas las informaciones que he encontrado, parece ser la (¿única?) Manera de ir si uno quiere cargar archivos .tar.gz en un repositorio. –

+0

insistiendo en copiar archivos inútiles en el repositorio - maven no es la única herramienta para usar un repositorio. * Los archivos .tar.gz son utilizados por muchas otras herramientas de empaquetado, p. apt, títere, etc. – Adam

+0

@ Adam, pero esas herramientas tienen sus propios repositorios y, a menudo, no pueden usar los repositorios de Maven. Por lo tanto, tendría sentido subir a un repositorio de Puppet pero no a un repositorio de Maven. –

Cuestiones relacionadas