0

プロジェクトのバージョンを更新するには、versions-maven-plugin を使用します。この更新されたバージョンでアーティファクトをインストールしたいのですが、maven-install プラグインは古いバージョンを使用しています。説明されている動作を実現するには、プロジェクトをどのように構成する必要がありますか?

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>parse-version</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <propertyPrefix>parsedVersion</propertyPrefix>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>update-version</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>set</goal>
                        <goal>commit</goal>
                    </goals>
                    <configuration>
                        <newVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${SVN_REVISION}</newVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>

通常、Maven のライフサイクルに関しては、バージョン プラグインはフェーズ検証で実行されるため、インストール プラグインは新しいバージョンを取得する必要があります。

4

1 に答える 1

0

Maven 3.2.1 以降では、プロパティをバージョンとして使用する可能性があります。これは、pom ファイルで次のようなものを指定できることを意味します。

<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.soebes.smpp</groupId>
    <artifactId>smpp</artifactId>
    <version>2.2.1</version>
  </parent>

  <groupId>com.soebes.examples.j2ee</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>

さらに、もちろん、次のようなマルチ モジュール ビルドの親要素でもこれを使用できます。

<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.soebes.examples.j2ee</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>

  <artifactId>service</artifactId>
  <packaging>ejb</packaging>

これは、結果として、これを介して Maven を実行できることを意味します。

mvn -Drevision=1.2.3-SNAPSHOT install

または、単純にリリースするには:

mvn -Drevision=1.2.3 install

ここでの欠点は、常にコマンド ラインまたは CI ジョブでリビジョンを指定する必要があることです。それとは別に、${changelist}または${sha1}もちろん組み合わせて使用​​できるものなど、さらに他のものを使用することができます。したがって、次のような提案を採用できます。

<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.soebes.smpp</groupId>
    <artifactId>smpp</artifactId>
    <version>2.2.1</version>
  </parent>

  <groupId>com.soebes.examples.j2ee</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}-${sha1}</version>
  <packaging>pom</packaging>

したがって、これを介してmavenを呼び出すことができます:

mvn -Drevision=1.2.3 -Dsha1=SVNRevision-SNAPSHOT clean package
于 2016-08-02T07:20:54.690 に答える