2

私はMaven 3を使用しています。

複数の Maven プロジェクト、つまり「データ モデル」、「サービス」、「プレゼンテーション」があり、3 つの異なるプロジェクトに分割されています。それらは個別に構成されます (つまり、maven の親 pom を使用しません)。

プロジェクトのセットアップ

mvn release:clean release:prepare release:perform個々のプロジェクトで実行すると、プロジェクトのバージョン (つまり、3.4.5-SNAPSHOT から 3.4.5) と他のすべてのものを更新するように、プロジェクトで maven リリース プラグインを正しくセットアップしました。

ここでの問題は、「プレゼンテーション」が「サービス」に依存し、「データ モデル」に依存していることです。バージョン番号を使用して、pom ファイル内のプロジェクトを参照します。

私が開発している間、たとえば、「プレゼンテーション」の「サービス」を 3.4.5-SNAPSHOT と呼ぶとします。しかし、展開中に、バージョンを 3.4.5 に変更するために「サービス」をリリースする必要があります。次に、「プレゼンテーション」でリリースを実行する前に、「プレゼンテーション」で「サービス」のバージョン参照を更新する必要があります。

リリース中に依存プロジェクトの参照を更新する必要がないように、これを自動化する方法はありますか?

以下のコメントのおかげで私が持っているもの: 更新: 25/03/2013

Maven を次のように実行します。

versions:use-releases -Dmessage="update from snapshot to release" scm:checkin release:clean release:prepare release:perform

結果: バージョンは更新されましたが、リリース ビルドは失敗しました。

4

1 に答える 1

4

Versions Maven Pluginは、要件、特に目標の versions:use-releasesを達成するのに役立つ場合があります。目標の versions:use-next-releasesversions:use-latest-releasesにも興味があるかもしれません。

サイドノート:

通常は、それらを Maven Multiple Module ( hereおよびhere ) として定義することをお勧めします。これにより、次の例のようにバージョンを簡単に管理できます。

<groupId>my-group</groupId>
<artifactId>my-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

    .....

<modules>
    <module>my-model</module>
    <module>my-service</module>
    <module>my-ui</module>
</modules>

私のモデル

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-model</artifactId>

マイサービス

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-service</artifactId>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>my-model</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

my-ui

<parent>
    <groupId>my-group</groupId>
    <artifactId>my-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>my-ui</artifactId>
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>my-service</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

上記の例については、リリース時に関連バージョンが親バージョンに基づいて自動的に更新されます。

于 2013-03-25T02:31:38.713 に答える