4

rpm-maven-plugin を使用して、プロジェクトの WAR を含む tarball の rpm を作成しています。既に tar ファイルがある場合は、rpm を作成できます。ただし、rpm ゴールを実行するときに tar ファイルを生成したいと考えています。

tar ファイルを作成するスクリプトがあります。準備ステップでスクリプトを呼び出しますが、スクリプトの実行時に rpm が既に作成されているため、tar が rpm に含まれていません。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1-alpha-4</version>
    <executions>
        <execution>
            <id>generate-rpm</id>
            <goals>
                <goal>rpm</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mappings>
          <mapping>
            <directory>/foo</directory>
            <sources>
                <source>
                    <location>DIRECTORY_FOR_MY_TAR</location>
                </source>
            </sources>
          </mapping>
        </mappings>
        <defineStatements>
           <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
        </defineStatements>
        <prepareScriptlet>
            <script>./../../../../scripts/rpm/prepare/makeATar.sh</script>
        </prepareScriptlet>
    </configuration>
</plugin>

mvn rpm:rpmmakeATar スクリプトを実行すると、DIRECTORY_FOR_MY_TAR に tar が作成されますが、rpm に含まれていません。もう一度実行mvn rpm:rpmすると、tar は正常に rpm に含まれます (最後に実行したときに makeATar を実行したときに DIRECTORY_FOR_MY_TAR に入れられたためmvn rpm:rpm)。

4

1 に答える 1

3

また、いくつかのアーティファクトを構築し、それらをrpm-maven-pluginを使用して RPM にパックする、同様のセットアップもあります。
RPM としてパックする前にアーティファクトを配置するには、

  • prepare-packageフェーズでmaven-antrun-pluginを使用して、すべてのアーティファクトを配置します。
  • パッケージフェーズの一部としてrpm-maven-pluginを呼び出します

それは私たちにとって非常にうまく機能します。rpm-maven-plugin の実行をインストール
フェーズに バインドし、パッケージフェーズでパッケージだったアーティファクトを使用することもできます。または、RPM パッキングを別の Maven モジュールに入れ、他のすべてのモジュールが既にビルドされた後にビルドします (そして、それらのアーティファクトを計画どおりにパックします)。

これが役立つことを願っています。

于 2014-07-27T12:23:22.337 に答える