2016-11-06 9 views

Odpowiedz

12

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:

  1. 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.

  2. 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.

  3. 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).

+0

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

+0

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

+0

Należy pamiętać, że filtrowanie zasobów jest ważne, aby ta wtyczka działała, nie należy jej pomijać! (' true ') – naXa