Die Version des Maven-Projekts ist im Grunde genommen in pom.xml
geschrieben, aber ~~ im Grunde müssen Sie die Version manuell erhöhen. ~~
** Nachtrag 2020/04/03 ** Wenn Sie das Release-Plug-In verwenden, wird z in x.y.z automatisch erhöht.
Aber was ist, wenn Sie ein Datum, einen Zeitstempel und eine Build-Nummer angeben möchten?
Pom.xml
mit sh script umschreiben? Ist es nicht zu schwer für Multi-Module?
Alles auf einmal mit mvn-Versionen umschreiben: set -DnewVersion = was auch immer
?
Es wird mehr Zeit brauchen, oder? Benötigen Sie am Ende ein Skript zum Erstellen?
Es scheint, dass Jenkins- und CI-Tools mit Plug-Ins erstellt werden können ...
Goal
mvn install
usw. werden das Datum und die Build-Nummer automatisch der Version
des Moduls zugewiesen. Beispiel) 0.0.1.20200401-2
Realisieren Sie, ohne selbst ein Skript usw. zu schreiben. Es ist zulässig, einige CI-Funktionen zu verwenden. Dies bedeutet, dass Sie vorerst eine Vorlage für "version" definieren können. Wenn Sie mit dem Befehl build einige Werte aus dem CI-Tool übergeben können, ist dies in Ordnung. UmgebungWerkzeuge 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 |
Unter dem Strich können Sie ein Datum und eine Build-Nummer angeben, indem Sie ** die Verwendung einiger CI-Funktionen zulassen **. Darüber hinaus verfügt dieses Projekt über eine Konfiguration mit mehreren Modulen. Alle Module verwenden die übergeordnete Version und die Versionen stimmen vollständig überein. Einfach ausgedrückt in Submodulen
pom.xml
<artifactId>openfhir-api</artifactId>
<packaging>war</packaging>
Setzen Sie einfach nicht das Tag "version". Legen Sie es nur in der Wurzel pom.xml
.
Dann haben alle Submodule die gleiche Version.
<version>
auf root pomroot/pom.xml
<version>0.0.1.${buildDate}-${revision}</version>
<properties>
auf den Root-Pomroot/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>
<!--Datum der Versionierung-->
<buildDate>${maven.build.timestamp}</buildDate>
<!--Datumsformat für die Versionierung-->
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
<!--Die für die Versionierung verwendete Versionsnummer.
CI/Mit CD-Tool-Drevision=Mit buildNumber überschreiben-->
<revision>SNAPSHOT</revision>
</properties>
Wie Sie in den Kommentaren sehen können, kann "
submodule/pom.xml
<parent>
<groupId>jp.example.myapp</groupId>
<artifactId>testsample</artifactId>
<version>0.0.1.${buildDate}-${revision}</version>
</parent>
Vergessen Sie nicht, dies für alle Submodule zu tun.
Versuchen Sie, mit mvn clean install
und mvn install -Drevision = 2
zu erstellen.
Sie können dies anhand der Datei "pom.properties" im Ordner "target" jedes Moduls und des Dateinamens der generierten Datei "jar" / "war" überprüfen. (Wenn nicht mit <build> / <finalName>
überschrieben)
$ 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
Ich denke, dass der Ausführungsbefehl in CI "mvn install" usw. ist, daher sollten Sie dort die Option "-Drevision =" hinzufügen. Die "Build-Nummer des Tages" finden Sie im CI-Tool, da es verschiedene Möglichkeiten gibt, diese zu erhalten.
Wenn Sie mit Jenkins ein Plug-In namens Versionsnummer verwenden, können Sie derzeit "BUILDS_TODAY" verwenden. (Die zurückzusetzende Zeitzone ist jedoch unbekannt ...)
Wechseln Sie für Azure-Pipelines zur Seite Lauf- oder Build-Nummern konfigurieren Demnach können Sie mit $ (Rev: r) gehen.
Es war eine Referenz für die Durchführung von "-Dreivision". https://stackoverflow.com/questions/18456111/what-is-the-maven-way-for-automatic-project-versions-when-doing-continuous-deliv
Dies war hilfreich für die Versionsverwaltung in mehreren Modulen. https://qiita.com/ms0_mtRiver/items/85593b17d6ebb8fb2cfd
Recommended Posts