La version du projet Maven est essentiellement écrite en pom.xml
, mais ~~ fondamentalement, vous devez augmenter la version manuellement. ~~
** Addendum 03/04/2020 ** Si vous utilisez le plug-in de version, z dans x.y.z sera incrémenté automatiquement.
Mais que faire si vous souhaitez donner une date, un horodatage et un numéro de build?
Réécrire pom.xml
avec le script sh? N'est-ce pas trop difficile pour les multi-modules?
Réécrivez tout d'un coup avec les versions mvn: set -DnewVersion = peu importe
?
Cela prendra plus de temps, non? Avez-vous besoin d'un script pour construire?
Il semble que les outils Jenkins et CI peuvent être réalisés avec des plug-ins ...
Ce que je veux faire ici n'est pas de gérer le nom de fichier qui est le produit d'Arfict, mais d'attacher la version d'Artefact elle-même.
Goal
Avec mvn install
etc., la date et le numéro de build sont automatiquement attribués à la version
du module.
Exemple) 0.0.1.20200401-2
Pour le réaliser sans écrire vous-même un script, etc.
Il est permis d'utiliser certaines fonctions CI.
... Cela signifie que vous pouvez définir un modèle pour version
pour le moment, et c'est OK si vous pouvez transmettre certaines valeurs de l'outil CI avec la commande build.
Outils etc. | Version etc. |
---|---|
MacbookPro | macOS Mojave 10.14.5 |
IntelliJ IDEA | Ultimate 2019.3.3 |
Java | AdoptOpenJDK 11 |
apache maven | 3.6.3 |
Spring Framework | 5.2.4.RELEASE |
JUnit | 5.6.0 |
Tomcat | apache-tomcat-8.5.51 |
L'essentiel est que vous pouvez donner une date et un numéro de build en ** autorisant l'utilisation de certaines fonctionnalités CI **. De plus, ce projet a une configuration multi-modules, et tous les modules utilisent la version parente et les versions sont parfaitement adaptées. En termes simples, dans des sous-modules
pom.xml
<artifactId>openfhir-api</artifactId>
<packaging>war</packaging>
Ne mettez simplement pas la balise version
. Mettez-le uniquement à la racine pom.xml
.
Ensuite, tous les sous-modules seront de la même version.
root/pom.xml
<version>0.0.1.${buildDate}-${revision}</version>
root/pom.xml
<properties>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--Date utilisée pour la gestion des versions-->
<buildDate>${maven.build.timestamp}</buildDate>
<!--Format de date utilisé pour la gestion des versions-->
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
<!--Numéro de révision utilisé pour la gestion des versions.
CI/Avec l'outil CD-Drevision=Écraser avec buildNumber-->
<revision>SNAPSHOT</revision>
</properties>
Comme vous pouvez le voir dans les commentaires, «
submodule/pom.xml
<parent>
<groupId>jp.example.myapp</groupId>
<artifactId>testsample</artifactId>
<version>0.0.1.${buildDate}-${revision}</version>
</parent>
N'oubliez pas de le faire pour tous les sous-modules.
Essayez de construire avec mvn clean install
et mvn install -Drevision = 2
.
Vous pouvez le vérifier par le pom.properties
dans le dossier target
de chaque module et le nom de fichier du fichier jar
/ war
généré. (S'il n'est pas écrasé par <build> / <finalName>
)
$ mvn clean install
$ ls -la **/target/*.?ar
17:02 submodule/target/submodule-0.0.1.20200402-SNAPSHOT.war
17:02 core/target/core-0.0.1.20200402-SNAPSHOT.jar
submodule/target/maven-archiver/pom.properties
#Generated by Maven
#Thu Apr 02 17:02:10 JST 2020
groupId=jp.example.myapp
artifactId=testsample
version=0.0.1.20200402-SNAPSHOT
$ mvn clean install -Drevision=2
$ ls -la **/target/*.?ar
17:29 submodule/target/openfhir-api-0.0.1.20200402-2.war
17:29 core/target/openfhir-core-0.0.1.20200402-2.jar
submodule/target/maven-archiver/pom.properties
#Generated by Maven
#Thu Apr 02 17:29:47 JST 2020
groupId=jp.example.myapp
artifactId=testsample
version=0.0.1.20200402-2
Je pense que la commande d'exécution dans CI est mvn install
etc., donc vous devriez y ajouter l'option` -Drevision = ʻ.
Veuillez vous référer à l'outil CI pour le "numéro de build du jour", car il existe différentes manières de l'obtenir.
Pour le moment, avec Jenkins, si vous utilisez un plug-in appelé Numéro de version, vous pouvez utiliser BUILDS_TODAY
. (Cependant, le fuseau horaire à réinitialiser est inconnu ...)
Pour Azure Pipelines, accédez à la page Configurer les numéros d'exécution ou de build Selon lui, vous pouvez aller en utilisant $ (Rev: r)
.
C'était une référence pour savoir comment faire -Dreivision
.
https://stackoverflow.com/questions/18456111/what-is-the-maven-way-for-automatic-project-versions-when-doing-continuous-deliv
Cela a été utile pour la gestion des versions en multi-module. https://qiita.com/ms0_mtRiver/items/85593b17d6ebb8fb2cfd
Recommended Posts