Развертывание пакета сборки с помощью плагина maven-release-plugin
-
19-09-2019 - |
Вопрос
Мы используем Hudson и maven-релиз-плагин для создания релизных сборок.Теперь у меня есть проект, который содержит сборка который объединяет все необходимые компоненты, а затем упаковывает их в пакет .tar.gz с желаемой структурой каталогов.
Теперь я пытаюсь заставить плагин выпуска развернуть этот пакет в нашем репозитории Maven во время цели Release:perform, но развертываются только стандартные материалы (исходники, javadoc, POM).
Я уже привязал цель сборки к этапу пакета maven, и .tar.gz собирается во время выпуска, но не загружается в репозиторий.Есть какие-нибудь подсказки, что я здесь делаю неправильно?
Вот конфигурация плагина сборки:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/distribution.xml</descriptor>
</descriptors>
<finalName>${pom.artifactId}-${pom.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<tarLongFileMode>warn</tarLongFileMode>
</configuration>
<executions>
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
Команда, которую я запускаю для создания выпуска:
mvn release:prepare release:perform release:clean
Решение
Тем временем я нашел 2 способа сделать то, что хотел.
Плагин maven-build-helper-plugin позволяет добавлять дополнительные записи в список артефактов, которые необходимо развернуть:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-distribution</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>target/${pom.artifactId}-${pom.version}.tar.gz</file>
<type>tar.gz</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
Другой вариант настолько прост, насколько это возможно, и кто-то из списка рассылки maven-user указал на это.Просто используйте сборку: единая цель вместо сборки: сборка.Таким образом, сгенерированный артефакт загружается в репозиторий на этапе развертывания.
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal> <!-- that's all :) -->
</goals>
</execution>
Другие советы
Развертывание файлов не является частью плагина выпуска, а является частью плагина развертывания (релиз сам по себе ничего не развертывает, но вы можете настроить плагин развертывания для вызова во время выпуска).
Обычно плагин развертывания развертывает все артефакты в удаленном репозитории, но сборки не являются артефактами;Maven никоим образом не может использовать архивы .tar.gz в своем репозитории, поэтому их развертывание вообще не имеет смысла.
Если вы настаиваете на копировании ненужных файлов в репозиторий, вы должны использовать deploy:deploy-file
(посмотреть документацию), чтобы развернуть файл вручную и настроить плагин на выполнение для его вызова на этапе выпуска.Но я все же советую воздержаться от этого.
Вероятно, вы ищете способ автоматически загрузить куда-нибудь сборку.Я не знаю плагина, который это делает.