2013-06-10 13 views
7

Ciao: Sto trovando che Maven distribuisce di default cambia il nome del file in modo che corrisponda alla versione + id artefatto. Ad esempiomaven: deploy file artefatto nome

Distribuire un file jar, con artefatto = A e versione = V-0.1 genererà un file jar denominato AV-0.1.jar.

C'è un modo per modificare il nome predefinito del file jar nella distribuzione, in modo che non concateni questi punti o per specificare esplicitamente il nome del vaso finale distribuito?

+0

Possibile duplicato di [questo] (http : //stackoverflow.com/questions/4238944/controlling-maven-final-name-of-jar-artifact) domanda. – dmahapatro

risposta

0

Semplice risposta a questo è: No.

Il problema alla base è se si desidera modificare lo schema di denominazione che non sarà possibile trovare manufatti in un repository. Questa è la ragione per avere uno schema di denominazione fisso.

3

risposta complessa a quella: sì

E 'un po' complicato e bisogna stare attenti, come il pom non sarà possibile ottenere riscritto. Quindi solo il repository remoto di Maven (artifactory o nexus) lo inserirà nella struttura di cartelle corretta.

Se si sovrascrive l'obiettivo deploy-file nella obiettivo Maven Deploy, è possibile sovrascrivere i parametri: http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

Un esempio che sarebbe sempre inviare la versione 4.5.1 per Nexus sarebbe simile a questa:

 <plugin> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>deploy-file</goal> 
        </goals> 
        <phase>deploy</phase> 
        <configuration> 
         <repositoryId>nexus-site</repositoryId> 
         <url>http://nexus.some.where/nexus-2/content/repositories/releases</url> 
         <file>${build.directory}/${project.build.finalName}.${project.packaging}</file> 
         <generatePom>false</generatePom> 
         <pomFile>pom.xml</pomFile> 
         <version>4.5.1</version> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

(e prima che qualcuno chieda, una ragione per fare qualcosa di simile è rendere le build più compatibili con CI. In CI tutto è solo un numero di build, non c'è davvero un "build a release", ogni checkin produce una produzione già artefatto, quindi sostituendo la versione 4.5.1 con ${BUILD_NUMBER} ti lasceranno molte versioni in te r stoccaggio artefatto ...)

+0

Grazie! Sono stato alla ricerca di questo per un po 'ora! L'unico problema che mi rimane è che utilizzo 'maven-shade-plugin'. Ora distribuisco due file sul mio sistema di destinazione: quello vecchio con il timestamp e il nuovo che proviene dalla tua soluzione lassù ^^ – displayname

0

mvn implementazione: distribuire file -DartifactId = AAA -Dversion = VVV -Dpackaging = barattolo

Il comando sopra inserire il file nella seguente struttura.

AAA 
-VVV 
--AAA_VVV.jar 

Se si vuole solo fare il nome del file creato diversi tra spinte consecutive al Artifactory, è possibile utilizzare il parametro -Dpackaging. vale a dire. Impostare il valore per il timestamp corrente

mvn implementare: distribuire file -DartifactId = AAA -Dversion = VVV -Dpackaging = 2017_01_31_01_37.jar

AAA 
-VVV 
--AAA_VVV.jar 
--AAA_VVV2017_01_31_01_37.jar