web-dev-qa-db-fra.com

Maven: change les propriétés de la version dans pom.xml

J'ai un pom.xml Maven, je construis un projet et libère le projet avec Jenkins.

Mais avant et après la construction de la "version", nous devons définir ma version dans 

Par exemple: J'ai dans pom.xml

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

avant de libérer j'ai besoin de définir comme ça

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

après la libération j'ai besoin de définir comme ça

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

Comment cela peut-il être fait?

17
user2004266

Si vous n'avez pas à utiliser votre propre propriété de version, tenez compte des éléments suivants qui fonctionneront sur votre élément <project><version>0.0.21-SNAPSHOT</version></project>:

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

Cela modifiera votre pom et ajustera la version à votre convenance. Vous voudrez probablement valider cette modification dans votre référentiel de contrôle de code source. Pour cela, l'objectif scm du plugin scm: checkin fonctionne parfaitement (en supposant que vous souhaitiez que cela soit automatisé):

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

Ensuite, vous pouvez effectuer votre publication (je recommande le maven-release-plugin ), après quoi vous pouvez définir votre nouvelle version et la valider comme ci-dessus.

Le plugin versions est votre ami. L'écriture de script de ce qui précède impliquerait probablement une construction paramétrée, ou de préférence le plugin groovy pour jenkins qui vous permet d'obtenir les variables de construction spécifiques à maven.

27
Anew

Il y a un moyen d'y arriver facilement. Avec une commande, vous pouvez modifier la partie de votre choix:

Pour couper et coller:

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

Pour plus de clarté:

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

Ceci est un exemple concis de la mise à jour simultanée de versions à l'aide de valeurs de construction

6
Aleksandr Panzin

Pour commencer, vous pouvez le faire à la main. Si votre construction respecte bien les conventions Maven, vous pouvez probablement utiliser l'un des quelques plug-ins Maven existants pour vous aider dans la gestion des numéros de version.

Le plugin maven-versions - permet d'automatiser les modifications manuelles apportées aux numéros de version. Il a Nice commandes CLI pour aider à ajuster vos poms avant de faire des communiqués.

Ensuite, il y a le maven-release-plugin qui automatise l’ensemble du processus de création d’une version. Il modifiera votre instantané en une version publiée, puis le reportera au prochain instantané suivant la création de la version. Pendant tout ce processus, des versions discrètes de poms sont validées dans le contrôle de source.

Encore une fois, le secret de la réussite dans les parties les plus automatisées de la communauté maven réside dans le fait de savoir si votre construction fait les choses à la manière maven. Les builds piratés, hautement modifiés et non conventionnels ont généralement beaucoup d'obstacles à une utilisation réussie du plugin de publication. 

6
chad

Build-helper plugin prend en charge les remplacements de regex, et peut même analyser les numéros de version si besoin est . http://www.mojohaus.org/build-helper-maven-plugin/ _

2
John Smith

Il y a quelque chose comme parsedVersion.nextIncrementalVersion

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

1
MariuszS

En regardant ce commentaire , vous décrivez que vous utilisez cette version pour fournir une dépendance. maven-release-plugin devrait vous aider à gérer les versions pour vous. Donc, fournissez ce plugin dans votre pom.xml. 

Et pour l'étape consistant à fournir manuellement la version et la version de développement, créez un travail dans Jenkins qui aura 2 paramètres de chaîne:
developmentVersion
version finale
Ajoutez l’étape de construction "Invoquer les cibles Maven de niveau supérieur" pour exécuter la validation (par exemple): 

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

Lors de la création du travail, vous serez invité à insérer les propriétés developmentVersion et releaseVersion.

À votre santé,
Despote

0
despot