Один из способов достижения этого - использовать git-commit-id-plugin. Добавьте к этому списку плагинов в build
разделе вашего 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>
Обратите внимание, что я изменил фазу validate
, поэтому свойство номер ревизии уже доступен в том, когда артефакт упакован ,
Затем, добавьте следующие строки в разделе build
:
<build>
<finalName>${project.artifactId}-${project.version}-${git.commit.id.describe-short}</finalName>
<!-- your list of plugins -->
</build>
Свойство git.commit.id.describe-short
продуцируется git-commit-id-plugin
. Он содержит текущий номер версии git (сокращен до 7 цифр) и опционный индикатор dirty
.
Произведенный артефакт будет выглядеть так: examplelib-1.0.2-efae3b9.jar
(или examplelib-1.0.2-efae3b9-dirty.jar
в случае, если в вашем репозитории отсутствуют незавершенные изменения).
Кроме того, вы также можете поместить эту информацию в MANIFEST.MF вашего артефакта. В таком случае добавьте в свой список плагинов (пример предполагает, что артефакт является 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>
Дополнительные замечания:
я показал простую конфигурацию git-commit-id-plugin
. На их сайте вы можете найти дополнительные параметры и свойства. В дополнение к свойствам, которые можно использовать внутри pom.xml, плагин также может генерировать файл свойств, содержащий информацию о ревизии.
В качестве альтернативы git-commit-id-plugin
, вы можете предпочесть buildnumber-maven-plugin. Чтобы получить номера версий, для этого плагина необходим плагин SCM, также настроенный в вашем pom.xml.
Эта установка может помешать другим плагинам, которые преобразуют или переименовывают ваши артефакты (в моем случае это был maven-shade-plugin - один из источников, который он создает, не содержал правильный номер версии).
как вы заработали? переменные не подвергаются воздействию «pom», и я получаю сообщение: переменная шаблона «git.commit.id.describe-short» не имеет значения – Renann
В определении «git-commit-id-plugin» I ' мы изменили этап выполнения на «validate», поэтому свойство номера версии уже доступно, когда артефакт упакован. – user3078523
Обратите внимание, что фильтрация ресурсов важна для работы этого плагина, не пропустите его! (' true ') –
naXa