Развертывание пакета сборки с помощью maven-release-plugin - PullRequest
22 голосов
/ 11 февраля 2010

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

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

33 голосов
/ 11 февраля 2010

Тем временем я нашел 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>
1 голос
/ 11 февраля 2010

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

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

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

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

...