webdevqa.jp.net

maven-release-pluginを使用したアセンブリパッケージのデプロイ

Hudsonと maven-release-plugin を使用してリリースビルドを実行します。これで、必要なすべてのコンポーネントをまとめて、目的のディレクトリ構造を持つ.tar.gzパッケージにパッケージ化する Assembly を含むプロジェクトができました。

今、release:performの目標の間に、release-pluginを取得してこのパッケージを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
23

その間、私は自分がやりたいことをする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>

もう1つは簡単で、Mavenユーザーのメーリングリストの誰かがこれを指摘しました。単純に、assembly:Assemblyの代わりにAssembly:singleゴールを使用します。このようにして、生成されたアーティファクトはデプロイフェーズ中にリポジトリにアップロードされます。

    <execution>
        <id>dist-Assembly</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal> <!-- that's all :) -->
        </goals>
    </execution>
34

ファイルのデプロイはリリースプラグインの一部ではなく、デプロイプラグインの一部です(リリースはそれ自体ではどこにもデプロイされませんが、リリース中に呼び出されるようにデプロイプラグインを構成できます)。

通常、デプロイプラグインはすべてのアーティファクトをリモートリポジトリにデプロイしますが、アセンブリはアーティファクトではありません。 Mavenはリポジトリ内の.tar.gzアーカイブを使用できないため、そもそもそれらをデプロイすることは意味がありません。

役に立たないファイルをリポジトリにコピーすることを主張する場合は、deploy:deploy-fileドキュメントを参照 )を使用してファイルを手動でデプロイし、リリースステップ中にそれを呼び出すように実行してプラグインを構成する必要があります。しかし、私はまだそれに対して忠告します。

おそらく探しているのは、アセンブリをどこかに自動的にアップロードする方法です。私はこれを行うプラグインを知りません。

1
Aaron Digulla