Аннотация
Плагин релиза 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, являются их собственными. |