Статьи

Тестирование Maven Release Plugin Номер версии автоинкремента

Аннотация

Плагин релиза Maven — очень мощный инструмент, и я очень полагаюсь на него для координации выпусков программного обеспечения. Обычно номера версий программного обеспечения соответствуют простому формату 1.0.0.0-SNAPSHOT . Но недавно мне нужно было добавить классификатор к номеру версии — что-то вроде 1.0-beta-SNAPSHOT или 1.0.0-fix-bug-description-SNAPSHOT . После моей первой попытки добавить классификатор плагин релиза Maven неожиданно автоматически увеличил номер версии. Поэтому мне нужно было исследовать поведение автоинкремента версии плагина релиза Maven, но не делать кучу бессмысленных тегов в производственном Git-репозитории (у меня не было репозитория dev для работы). Цель этого блога — показать, как можно настроить плагин релиза Maven, чтобы он мог работать локально и не вносить изменения в производственный контроль версий.

отказ

Этот пост является исключительно информативным. Критически подумайте, прежде чем использовать любую представленную информацию. Учитесь на этом, но в конечном итоге принимайте свои собственные решения на свой страх и риск.

Требования

Я сделал всю работу для этого поста, используя следующие основные технологии. Вы можете сделать то же самое с разными технологиями или версиями, но без гарантий.

  • NetBeans 11.2
  • Maven 3.3.9 (в комплекте с NetBeans)
  • maven-release-плагин 2.5.1
  • Java 11 (zulu11.35.15-ca-jdk11.0.5-win_x64)
  • Git для Windows 2.25.0

ПРИМЕЧАНИЕ . Плагин релиза Maven предполагает, что исполняемые файлы (например, git) находятся в PATH . Если вы получаете сообщение об ошибке, что команда git не найдена, вам нужно убедиться, что Git установлен независимо от вашей IDE и от PATH .

Скачать

Посетите мою страницу GitHub https://github.com/mjremijan, чтобы увидеть все мои проекты с открытым исходным кодом. Код для этого поста находится по адресу: https://github.com/mjremijan/thoth-maven-release-plugin

Установить Git

Первое, что вам нужно сделать, это установить Git. Даже если Git интегрирован в вашу IDE (как с NetBeans), плагин релиза Maven предполагает, что необходимые ему исполняемые файлы доступны в PATH. Загрузите, установите и настройте PATH для своей среды.

Тег POM <scm>

Второе, что вам нужно сделать, это настроить тег POM <scm>. Когда запускается плагин Maven, он использует значения тега <scm> для определения местоположения системы контроля версий.

Соответствующая конфигурация приведена ниже, см. Полный файл pom.xml на GitHub.

Поскольку я хочу работать локально и не подключаться к производственной системе контроля версий, в моем примере используется Git. Git работает очень хорошо, без необходимости сервера. Давайте посмотрим на тег <scm>.

Листинг 1 — тег <scm>

1
2
3
4
5
6
7
8
<scm>
  <url>scm:git:file://D:/Projects/thoth-maven-release-plugin/.git</url>
  <connection>
    scm:git:file://D:/Projects/thoth-maven-release-plugin/.git</connection>
  <developerConnection>
    scm:git:file://D:/Projects/thoth-maven-release-plugin/.git
  </developerConnection>
</scm>

Код в листинге 1 показывает мою конфигурацию для тега <scm>. Очевидно, что ссылка на папку проекта .git в файловой системе моего компьютера должна выделиться. Вы должны изменить это значение для вашего компьютера. Помните, цель — работать на месте! Эта конфигурация доставит вас туда.

После настройки тега <scm> необходимо настроить maven-release-plugin. Давайте посмотрим на это дальше.

POM maven-relayse-плагин

Третье, что нужно сделать, это настроить артефакт maven-release-plugin. Эта конфигурация предназначена для промежуточного хранилища Maven.

Соответствующая конфигурация приведена ниже, см. Полный файл pom.xml на GitHub. Давайте посмотрим на эту конфигурацию.

Листинг 2 — тег maven-release-plugin

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.1</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.shared</groupId>
          <artifactId>maven-invoker</artifactId>
          <version>2.2</version>
        </dependency>
      </dependencies>
      <configuration>
        <stagingRepository>
          localforme::default::file://C:/Users/Michael/.m2/repository
        </stagingRepository>
      </configuration>
    </plugin>
    ....
</build>

Строка 6 устанавливает maven-release-plugin на версию 2.5.1 . Это было актуально во время моего исследования (2019 Q2). Использование версии ниже 2.5.2 имеет некоторые дополнительные ошибки, которые я получу в следующем.

Строка 8 устанавливает зависимость maven-invoker для версии 2.2 . Maven 3.3 изменил имя скрипта (в Windows) с mvn.bat на mvn.cmd . Maven-release-plugin ниже версии 2.5.2 предполагает mvn.bat . Изменение maven-invoker на версию 2.2 изменяет предположение на mvn.cmd поэтому можно использовать Maven 3.3+ (Lucas, 2015). Если вы используете maven-release-plugin больше или равен версии 2.5.2 , вам не нужна эта конфигурация maven-invoker.

Строка 15 устанавливает местоположение промежуточного хранилища Maven. Как правило, вы должны установить это в settings.xml . Если он не установлен, вы получите ошибки сборки. Я покажу, как настроить это здесь. Если он у вас есть в settings.xml вы можете удалить эту конфигурацию.

Теперь, когда pom.xml настроен, давайте посмотрим, как его запустить.

Команда MVN

Теперь, когда конфигурация настроена, пришло время запустить проект Maven и проверить, что все работает. В листинге 3 показаны свойства и параметры для mvn .

Листинг 3 — команда mvn

1
2
3
4
mvn
  -Dmaven.test.skip=true
  -Dmaven.javadoc.failOnError=false
  --batch-mode release:clean release:prepare release:stage

Там не так много для этой командной строки. Строка 4 является наиболее важной. Он определяет цели maven-release-plugin для выполнения.

Теперь вы готовы к тестированию. Запустите команду и посмотрите, что произойдет.

Резюме

Если вы используете IDE, например NetBeans, который автоматически просматривает и перезагружает файлы при обнаружении изменений в файловой системе, вы можете открыть pom.xml , затем выполнить команду mvn и, наконец, посмотреть, как автоматически меняется тег <version>, так как Maven Бег. Таким образом, вы можете начать с любого значения для тега <version> и узнать, как оно автоматически изменяется. Наслаждайтесь!

Рекомендации

Лукас. (2015, 1 июля). Не удалось выполнить целевой Maven подготовлен [Комментарий веб-журнала]. Переполнение стека. Получено с https://stackoverflow.com/questions/29755620/failed-to-execute-goal-maven-releaseprepare .

Опубликовано на Java Code Geeks с разрешения Майкла Ремиджана, партнера нашей программы JCG. См. Оригинальную статью здесь: Тестирование номера версии плагина Maven Release с автоматическим увеличением

Мнения, высказанные участниками Java Code Geeks, являются их собственными.