4

Maven リリース プラグインを使用しており、リリースを作成しようとしています。私がマスターにいるとき (私は Git を使用しています)、プロジェクト (マルチモジュール) と依存関係 (マルチモジュール) の両方に SNAPSHOT バージョンがあります。

SNAPSHOT が使用されていないマスターから (ブランチの作成をスキップして) タグを作成したいとします。

これは私の簡略化された pom.xml です:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>results</artifactId>
<version>1.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Results parent module</name>

<modules>
    <module>results-web</module>
    <module>results-persistence</module>
    <module>results-domain</module>
    <module>results-logic</module>
    <module>results-logic-api</module>
    <module>results-ear</module>
    <module>results-configuration</module>
    <module>results-rules-ejb</module>
    <module>results-rules</module>
    <module>results-rest</module>
</modules>

<properties>
    <dependency1.version>1.2.3-SNAPSHOT</main.version>
    <dependency2.version>3.4.5-SNAPSHOT</main.version>
</properties>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
                    <tagNameFormat>@{project.version}</tagNameFormat>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <localCheckout>true</localCheckout>
                    <pushChanges>false</pushChanges>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency1-domain</artifactId>
            <version>${dependency1.version}</version>
        </dependency>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency1-enumerations</artifactId>
            <version>${dependency1.version}</version>
        </dependency>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency1-logic</artifactId>
            <version>${dependency1.version}</version>
            <type>ejb</type>
        </dependency>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency2-domain</artifactId>
            <version>${dependency2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency2-enumerations</artifactId>
            <version>${dependency2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.my.project</groupId>
            <artifactId>dependency2-logic</artifactId>
            <version>${dependency2.version}</version>
            <type>ejb</type>
        </dependency>
    </dependencies>
</dependencyManagement>

私が行った場合:

mvn release:prepare -Darguments="-dependency1.version=1.2.3.0 -Ddependency2.version=3.4.5.0"

これにより、まだ SNAPSHOT 依存関係を持つブランチが作成されます。

<properties>
    <dependency1.version>1.2.3-SNAPSHOT</main.version>
    <dependency2.version>3.4.5-SNAPSHOT</main.version>
</properties>

上記の部分が次のようなタグを生成するにはどうすればよいですか。

<properties>
        <dependency1.version>1.2.3.0</main.version>
        <dependency2.version>3.4.5.0</main.version>
</properties>
4

2 に答える 2

3

リリース プラグインは、リアクターの一部ではない POM の依存バージョンを変更できません。

Maven バージョン プラグインを試してください。versions:use-releasesを使用して、すべてのスナップショットの依存関係を対応するリリースに置き換えることができます。それらを手動で置き換えたい場合 (おそらくバージョンがスナップショットと異なるため)、versions:set を使用できます。ただし、どちらもプロパティで提供される依存関係のバージョンでは機能しません。プロパティバージョンの場合: update-propertiesは allowSnapshots=false の設定で使用されます。特別なバージョン範囲が必要ない場合、この目標は自動的に機能しますが、そのような要件に対処するように構成することもできます。

Stephen が述べたように、 preparaionGoalsを使用してバージョン プラグインを呼び出すようにリリース プラグインを構成できます。<preparationGoals>clean versions:use-releases verify</preparationGoals>

または、バージョン プラグインをリリース前に手動で呼び出します。

mvn versions:use-releases scm:checkin -Dmessage="依存関係のリリース バージョン"

于 2013-06-06T15:19:24.897 に答える
0

リリース プラグインは、このユース ケースに対応するようには設計されていません。

preparationGoalsハイジャックしcompletionGoalsて、pom を編集するプラグインを呼び出すことで、どこかにたどり着くことができるかもしれません。completionGoals

しかし今のところ、プラグインを取得して pom を編集および編集解除してバージョンを設定することができないため、手動で編集する必要があります

于 2013-06-06T12:31:10.967 に答える