2013-01-23 14 views
15

Ho un Maven pom.xml, costruisco il progetto e rilascio la distribuzione del progetto con Jenkins.Maven: modifica le proprietà della versione in pom.xml

Ma prima e dopo la generazione "versione" bisogna impostare la mia versione in

Per esempio: ho in pom.xml

<properties> 
    <version-own>0.0.21-SNAPSHOT</version-own> 
</properties> 

prima del rilascio devo inserire come questo

<properties> 
    <version-own>0.0.25</version-own> 
</properties> 

dopo il rilascio devo inserire come questo

<properties> 
    <version-own>0.0.27-SNAPSHOT</version-own> 
</properties> 

Come si può fare?

+3

Per i principianti, 0.0.21-SNAPSHOT dovrebbe diventare 0.0.21 nella sua versione. Quindi, dopo il rilascio, si passa il numero alla versione successiva e si aggiunge lo snapshot, ad esempio 0.0.22-SNAPSHOT, per indicare che è attualmente in fase di sviluppo. Nota, sembra che tu stia saltando i numeri, che va bene, ma non ho fatto in questo esempio. – chad

risposta

6

Per i principianti, puoi farlo a mano. Se la tua build segue bene le convenzioni di esperti, potresti probabilmente sfruttare uno dei due plugin di Maven che esistono per aiutare nella gestione dei numeri di versione.

Il maven-versions-plugin consente di automatizzare le modifiche manuali ai numeri di versione. Ha dei buoni comandi CLI per aiutare a mettere a punto i tuoi poms prima di fare le uscite.

Quindi c'è lo maven-release-plugin che automatizza l'intero processo di riduzione di un rilascio. Cambierà l'istantanea a una versione di rilascio, quindi la trasferirà all'istantanea successiva dopo la creazione del rilascio. Durante tutto questo processo, commette versioni discrete dei poms per il controllo del codice sorgente.

Ancora una volta, il segreto per vedere il successo nei pezzi più automatizzati della comunità di esperti è se la tua build sta facendo le cose in modo generico oppure no. Le build hackerate, molto ottimizzate e non convenzionali di solito hanno molti ostacoli all'uso del plugin di rilascio.

+0

Non mi hai capito. Hai bisogno di cambiare .

 0.0.21-SNAPSHOT    com.test-release features-test-release ${version-own} 
user2004266

25

Se non c'è bisogno di usare la vostra proprietà versione, considerare quanto segue che opererà sul vostro elemento <project><version>0.0.21-SNAPSHOT</version></project>:

mvn versions:set versions:commit -DnewVersion="0.0.25" 

che modificherà il vostro pom e regolare la versione a proprio piacimento. È probabile che vuole rendere la modifica al repository controllo del codice sorgente, per questo scm del plugin scm: obiettivo checkin funziona bene (supponendo che si desidera che questo essere automatizzato):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release." 

Quindi è possibile eseguire la vostra release (raccomando lo maven-release-plugin), dopo di che puoi impostare la tua nuova versione e confermarla come sopra.

Il versions plugin è tuo amico. Scripting di quanto sopra implicherebbe probabilmente alcune build parametrizzate, o preferibilmente il plugin groovy per jenkins che consente di ottenere le variabili di costruzione specifiche per il personaggio.

+0

Richiesto cambio . 0.0.21-SNAPSHOT TestCom-release funzioni-test-rilascio $ {version-own} user2004266

+1

Qui si gioca l'avvocato del diavolo: perché non è possibile eliminare lo ' 0.0.21-SNAPSHOT' per semplicemente ' 0.0.21-S NAPSHOT '? Puoi ancora fare riferimento alla versione con '$ {project.version}' ** se ** ne hai bisogno, e puoi usare il pattern che ho descritto sopra con le versioni, i plugin release e scm. – Anew

+0

version-own is dependency version – user2004266

0

Guardando questa comment si sta descrivendo che si sta utilizzando questa versione di fornire una dipendenza. maven-release-plugin dovrebbe aiutarti a gestire le versioni per te. Quindi fornisci quel plugin nel tuo pom.xml.

E per la fase di predisporre manualmente la versione di rilascio e lo sviluppo, creare un processo a Jenkins che avrà 2 parametri di stringa:
developmentVersion
releaseVersion
Aggiungi "Richiamare obiettivi Maven di alto livello" costruire passo da eseguire il rilascio (per esempio):

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion} 

Quando si costruisce il lavoro, vi verrà chiesto di inserire sia il developmentVersion e releaseVersion.

Cheers,
Despot

5

C'è un modo per per così facilmente. Con un solo comando è possibile cambiare a seconda di quale parte si desidera:

Per taglia e incolla:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}' 

Per chiarezza:

mvn build-helper:parse-version versions:set -DbuildNumber=555 
    '-DnewVersion= 
        ${parsedVersion.majorVersion} 
       .${parsedVersion.minorVersion} 
       .${parsedVersion.incrementalVersion} 
       -${buildNumber}' 

Questo è un esempio conciso come aggiornare le versioni in un colpo solo con costruire valori

1

C'è qualcosa di simile parsedVersion.nextIncrementalVersion

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

Problemi correlati