Развертывание сборки с помощью maven-release-плагина

Мы используем Hudson и maven-release-plugin для создания релизов. Теперь у меня есть проект, содержащий assembly, который объединяет все необходимые компоненты и затем упаковывает их в пакет .tar.gz с желаемым структура каталогов.

Теперь я пытаюсь запустить плагин release для развертывания этого пакета в нашем репозитории Maven во время выпуска: выполнить задачу, но развернуты только стандартные материалы (источники, 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 ответа

Между тем, я нашел 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 maillistlist указал на это. Простое использование сборки: единственная цель вместо сборщика: сборка. Таким образом, сгенерированный артефакт загружается в репозиторий во время фазы развертывания.

<execution>
 <id>dist-assembly</id>
 <phase>package</phase>
 <goals>
 <goal>single</goal> <!-- that all :) -->
 </goals>
 </execution>


Развертывание файлов не является частью плагина выпуска, а плагина развертывания (релиз не разворачивает материал где-либо отдельно, но вы можете настроить плагин развертывания для вызова во время выпуска).

Обычно плагин развертывания развертывает все артефакты в удаленном репозитории, но сборки не являются артефактами; Maven не может использовать архивы .tar.gz в своем репозитории в любом случае, поэтому не имеет смысла развертывать их в первую очередь.

Если вы настаиваете на копировании бесполезных файлов в репозиторий, вы должны использовать deploy:deploy-file (см. документы), чтобы развернуть файл вручную и настройте плагин с выполнением, чтобы вызвать его во время этапа выпуска. Но я все же советую против этого.

То, что вы, вероятно, ищете, - это способ загрузки сборки где-то автоматически. Я не знаю плагина, который делает это.

licensed under cc by-sa 3.0 with attribution.