Автоматическое увеличение номера сборки в проекте Java - PullRequest
24 голосов
/ 24 января 2012

Я использую систему управления версиями, которая представлена ​​abbuild, где a - полная версия (будет 0 для прототипа, альфа и бета версии, 1 для основного выпуска), b - базовая версия (в соответствии с представлениемстадии proto, alpha, beta и) и build представляют буквально количество раз, когда проект был скомпилирован.

В данный момент у меня есть приложение, которое читает текстовый файл, увеличивает его число и сохраняет втекстовый файл, когда приложение запускается с установленным флагом отладки.

Я ищу более "правильный" способ сделать это, используя Java и Netbeans.Есть ли способ, которым я могу вставить номер сборки в процесс сборки где-нибудь?желательно сохранить номер в исходном файле, который поставляется вместе с проектом - вместо того, чтобы полагаться на существование соседнего файла.

Ответы [ 3 ]

20 голосов
/ 02 июля 2016

Есть пара популярных плагинов Maven, которые выполняют это умение:

Плагин Maven Release из проекта Apache Maven немного перебор для простого обновления номера версии. Поэтому используйте последний плагин для создания номера версии (в форме MAJOR.MINOR.BUILD; например, 3.1.4, где 4 - автоинкремент) следующим образом:

  1. Откройте файл pom.xml проекта.
  2. Включить плагин в раздел build (после раздела dependencies):
  <scm>
    <connection>scm:svn:http://127.0.0.1/dummy</connection>
    <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
    <tag>HEAD</tag>
    <url>http://127.0.0.1/dummy</url>
  </scm>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <id>buildnumber</id>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <format>{0,number}</format>
          <items>
            <item>buildNumber</item>
          </items>                    
          <doCheck>false</doCheck>
          <doUpdate>false</doUpdate>
          <revisionOnScmFailure>unknownbuild</revisionOnScmFailure>   
        </configuration>
      </plugin>    
    </plugins>
    <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
  </build>
  1. Убедитесь, что pom.xml определяет старшую и младшую версию в элементе версии в верхней части файла. Например:
<version>3.1</version>
  1. Сохраните файл pom.xml.
  2. Перестройте проект.

Номер версии должен увеличиться.


Плагину требуется настроенный элемент хранилища управления исходным кодом (<scm>). Если вам не важен номер регистрации в хранилище, используйте вместо этого dummy scm . Это можно использовать для включения номера ревизии из хранилища, что является упражнением для reader .

1 голос
/ 19 сентября 2016

Вы можете использовать git commit count текущей ветви в качестве номера сборки.Используйте эту командную строку, чтобы получить количество коммитов: git rev-list HEAD --count.

Интеграция с инструментами сборки будет довольно простой.Если вы используете Gradle, то вы можете использовать этот плагин: https://github.com/rockerhieu/Versionberg/

0 голосов
/ 07 октября 2018

У меня возникли некоторые проблемы и я использую ответ «Дейв Джарвис».Это добавляет правильную версию и номер сборки в локально сгенерированный файл jar, например: myProject-3.1.1234.jar.Но в репозитории maven артефакт установлен как версия «3.1» вместо (я ожидал) «3.1.1234».Номер сборки все еще там отсутствует ...

Чтобы установить артефакт в репозиторий maven с правильной версией и номером сборки («3.1.1234»), вы должны сделать (дополнительно к ответу «Дейв Джарвис»)."):

  1. Добавление свойства основной / вспомогательной версии:
<properties>
  <!-- !!!!!!!!! SETTING HERE THE CORRECT MAJOR/MINOR VERSION NUMER !!!!!!!!!! -->
  <major.minor.version>1.0</major.minor.version>
</properties>
Установка правильного номера версии для артефакта с помощью nashorn-maven-plugin:
<!-- set "major.minor.revision" version -->
<plugin>
  <groupId>io.github.michaldo</groupId>
  <artifactId>nashorn-maven-plugin</artifactId>
  <version>0.0.1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>eval</goal>
      </goals>
      <configuration>
        <script>
          $project.artifact.version = "${major.minor.version}.${buildNumber}";
        </script>
      </configuration>
    </execution>
  </executions>
</plugin>    

После перестройки / установки проекта артефакт будет находиться в хранилище maven как версия "3.1.1234": -)

Обратите внимание: для увеличения основной или вспомогательной версии необходимо изменить только свойство major.minor.version!

...