2016-11-06 3 views
5

Я использую maven, и моя цель состоит в том, чтобы включить git commit hash в номер версии. Что-то вроде: 1.1. {Git_hash}.Включить git commit hash в jar-версию

Я стараюсь следовать этому tutorial.

В: Возможно ли каким-либо образом переопределить номер версии, указанный в элементе версии файла pom?

ответ

12

Один из способов достижения этого - использовать 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> 

Дополнительные замечания:

  1. я показал простую конфигурацию git-commit-id-plugin. На их сайте вы можете найти дополнительные параметры и свойства. В дополнение к свойствам, которые можно использовать внутри pom.xml, плагин также может генерировать файл свойств, содержащий информацию о ревизии.

  2. В качестве альтернативы git-commit-id-plugin, вы можете предпочесть buildnumber-maven-plugin. Чтобы получить номера версий, для этого плагина необходим плагин SCM, также настроенный в вашем pom.xml.

  3. Эта установка может помешать другим плагинам, которые преобразуют или переименовывают ваши артефакты (в моем случае это был maven-shade-plugin - один из источников, который он создает, не содержал правильный номер версии).

+0

как вы заработали? переменные не подвергаются воздействию «pom», и я получаю сообщение: переменная шаблона «git.commit.id.describe-short» не имеет значения – Renann

+0

В определении «git-commit-id-plugin» I ' мы изменили этап выполнения на «validate», поэтому свойство номера версии уже доступно, когда артефакт упакован. – user3078523

+0

Обратите внимание, что фильтрация ресурсов важна для работы этого плагина, не пропустите его! (' true') – naXa

Смежные вопросы