3

おそらくこれにかなり似ている質問があります。かなり一般的な問題であると想像しなければならないこと、つまり同じアーティファクトで複数のバリエーションを生成するようにMavenを構成する方法を解決する必要がありますが、まだ良い解決策を見つけていません。

マルチモジュールプロジェクトがあり、最終的にassemblyプラグインがアーティファクトを生成します。ただし、アセンブリの一部には、最近大幅に変更されたライブラリが含まれているため、プロジェクトの一部のコンシューマーにはライブラリバージョンNが必要であり、他のコンシューマーにはバージョンN+1が必要です。theproject-1.2.3.thelib-1.0.tar.gz理想的には、たとえば、などの複数のアーティファクトを自動的に生成しますtheproject-1.2.3.thelib-1.1.tar.gz(これは、プロジェクトのリリース1.2.3であり、ライブラリバージョン1.0または1.1のいずれかに対して実行されます)。

現在、問題のライブラリの最新バージョンに対してビルドするデフォルトのプロパティと、古いバージョンに対してビルドするプロファイルがたくさんあります。この方法でどちらか一方をデプロイできますが、1つのビルドで両方をデプロイすることはできません。上記の質問とは異なる主な問題点は次のとおりです。プラグインでbuild-one-clean-build-the-otherを自動化することはできません。release

通常、mvn release:prepare release:performマルチモジュールプロジェクトのルートから、内部のNexusへのすべてのデプロイを処理します。ただし、その場合は、古いライブラリプロファイルを実行するか、なしで実行して新しいプロファイルを取得するかのいずれかを選択する必要があります。両方をデプロイするにはリリースプラグインが必要です。これは不可能ですか?自動ビルドでさまざまなプラットフォームのサポートを生成したいと思っているのは、私たちが最初ではないことを想像する必要があります。

4

1 に答える 1

3

異なるタイプ/分類子を使用して追加のアーティファクトをインストールできます。これを達成するには、 build-helper-maven-pluginのattach-artifact目標を使用します。これは小さな例です-製品のWindowsおよびUnixインストーラーをwindows/exeおよびunix/shファイルとしてデプロイしています。これらのファイルはローカルリポジトリにインストールされ、配布管理に展開されます。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>install-installation</id>
            <phase>install</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>${basedir}/target/${project.artifactId}-${project.version}-windows.exe</file>
                        <classifier>windows</classifier>
                        <type>exe</type>
                    </artifact>
                    <artifact>
                        <file>${basedir}/target/${project.artifactId}-${project.version}-unix.sh</file>
                        <classifier>unix</classifier>
                        <type>sh</type>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

お役に立てれば。

于 2011-06-16T06:11:29.743 に答える