Jednym ze sposobów osiągnięcia tego jest użycie git-commit-id-plugin. Dodaj do tego wykazu wtyczek w sekcji build
swojej pom.xml:
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
</configuration>
</plugin>
uwagi, że już zmienił fazę validate
, więc właściwość Numer wersji jest już dostępny w artefakt, gdy jest zapakowany .
Następnie dodać następujące sekcji build
:
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
<!-- your list of plugins -->
</build>
Obiekt git.commit.id.describe-short
jest produkowany przez git-commit-id-plugin
. Zawiera aktualny numer rewizji git (skrócony do 7 cyfr) i opcjonalny wskaźnik dirty
. Wygenerowany artefakt będzie wyglądał tak: examplelib-1.0.2-efae3b9.jar
(lub examplelib-1.0.2-efae3b9-dirty.jar
w przypadku niezatwierdzonych zmian w repozytorium).
Dodatkowo możesz również umieścić te informacje w pliku MANIFEST.MF swojego artefaktu. W takim przypadku dodać do swojej listy wtyczek (przykład zakłada, że artefakt jest jar
):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<SCM-Revision>${git.commit.id.describe-short}</SCM-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
Uwagi dodatkowe:
mam pokazane prostą konfigurację git-commit-id-plugin
. Na ich stronie możesz znaleźć więcej opcji i właściwości. Oprócz właściwości, które można wykorzystać w pliku pom.xml, wtyczka może również generować plik właściwości zawierający informacje o wersji.
Jako alternatywę dla git-commit-id-plugin
, możesz preferować buildnumber-maven-plugin. Aby uzyskać numery wersji, ta wtyczka wymaga wtyczki SCM również skonfigurowanej w twoim pliku pom.xml.
Ta konfiguracja może zakłócać działanie innych wtyczek, które przekształcają lub zmieniają nazwę artefaktów (w moim przypadku była to wtyczka maven-shade - jedno ze źródeł, które produkuje jar, nie zawiera poprawnego numeru wersji).
jak to się stało? zmienne nie są wystawione na 'pom' i otrzymuję komunikat: Zmienna szablonu" git.commit.id.describe-short "nie ma wartości – Renann
W definicji 'git-commit-id-plugin' I ' ve zmienił fazę wykonania na "sprawdzanie poprawności", więc właściwość numeru wersji jest już dostępna po spakowaniu artefaktu. – user3078523
Należy pamiętać, że filtrowanie zasobów jest ważne, aby ta wtyczka działała, nie należy jej pomijać! (' true ') –
naXa