在mvn发布期间使用mvn版本插件

问题描述 投票:0回答:1

我在Kubernates中有一个多模块Maven项目。我们打算将所有这些模块一起版本化。但是到目前为止,我最终在每个模块pom.xml中进行了硬编码,如下所示

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>

主父模块具有以下配置

<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>

Reference

当前,我正在使用pom.xml中的mvn版本插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.3</version>
    <configuration>
        <autoVersionSubmodules>true</autoVersionSubmodules>
        <tagNameFormat>${product_label}-@{project.version}</tagNameFormat>
        <releaseProfiles>releases</releaseProfiles>
        <preparationGoals>clean deploy</preparationGoals>
        <arguments>-s settings.xml</arguments> 
    </configuration>
</plugin>

由于该项目位于Kubernetes中,所以这是发布时我正在使用的Jenkins文件内容

def MVN_RELEASE = "release:clean release:prepare release:perform -Dmaven.source.skip=true"
stage('Release artifacts to artifactory') {
    steps {
        container('maven') {
            withCredentials() {
                sh "mvn ${MVN_RELEASE}  -Dresume=false"
            }
        }
    }
}

现在,在发行期间,我需要通过选择的新版本来更新父pom和所有子模块poms版本,我可以使用mvn version plugin,类似

  1. [mvn versions:set -DnewVersion=3.00.0-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false然后]
  2. mvn versions:commit -DprocessAllModules

我应该在Jenkins / pom.xml的哪个阶段添加它?现在,此插件仅在我想更改到自己选择的特定版本(例如3.00.0-Snapshot)时才有用,否则,mvn版本插件应自动将版本更改为2.50.1-SNAPSHOT。那是正确的理解吗?

我如何优雅地处理此Pom版本更新问题?

提前感谢!

maven kubernetes maven-release-plugin maven-versions-plugin
1个回答
0
投票

我不明白你为什么想要版本插件。

首先,您不需要将<version>标记添加到模块中。您需要指定父级的版本,但是您可以从父级继承您的版本(相同)。

第二,maven发行插件具有参数releaseVersiondevelopmentVersion,可用于在命令行上设置发行版和将来的开发版本。

© www.soinside.com 2019 - 2024. All rights reserved.