Distribuzione di pacchetto di montaggio con Maven-release-plugin
-
19-09-2019 - |
Domanda
Usiamo Hudson e il Maven-release-plugin per fare il build di rilascio. Ora ho un progetto che contiene un href="http://maven.apache.org/plugins/maven-assembly-plugin/" assemblaggio rel="noreferrer">
Ora sto cercando di ottenere il rilascio-plugin per distribuire il pacchetto al nostro repository Maven durante il rilascio: eseguire obiettivo, ma solo la roba standard (fonti, javadoc, POM) siano utilizzate Ho già legato l'obiettivo di montaggio alla fase pacchetto di Maven, e il .tar.gz ottiene costruire durante il rilascio, ma non caricato nel repository. Eventuali suggerimenti quello che sto facendo male qui? Ecco la configurazione di montaggio-plugin: Il comando corro per costruire un rilascio è <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
Soluzione
Nel frattempo, ho trovato 2 modi di fare quello che volevo.
Il Maven-build-helper-plugin permette di aggiungere ulteriori voci all'elenco dei manufatti che dovrebbe essere distribuito:
<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>
L'altro è così semplice come si arriva e qualcuno sulla mailinglist Maven-utente fatto notare. Uso semplice l'assemblaggio: unico obiettivo, invece di asssembly: assemblaggio. In questo modo l'artefatto generato viene caricato nel repository durante la fase di distribuzione.
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal> <!-- that's all :) -->
</goals>
</execution>
Altri suggerimenti
La distribuzione di file non è parte della versione plug-in, ma del plugin deploy (release non distribuisce roba da nessuna parte per sé, ma è possibile configurare il deploy del plugin di essere chiamato durante un rilascio).
Normalmente, il plug Deploy distribuire tutte artefatti al repository remoto ma assiemi non sono artefatti; Maven non può utilizzare gli archivi .tar.gz nella sua repository in qualsiasi modo, quindi non ha senso distribuire loro in primo luogo.
Se si insiste per copiare i file inutili nel repository, è necessario utilizzare deploy:deploy-file
( vedi la documentazione ) per distribuire un file manualmente e configurare il plugin con un'esecuzione per invocarlo durante la fase di rilascio. Ma ho ancora consiglio contro di essa.
Quello che probabilmente stai cercando è un modo per caricare un assembly da qualche parte automaticamente. Io non sono a conoscenza di un plugin che fa questo.