我在 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>
目前,我在 pom.xml 中使用 mvn release 插件
<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 和所有子模块 pom 版本,我可以使用mvn 版本插件,例如
mvn versions:set -DnewVersion=3.00.0-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false
接着mvn versions:commit -DprocessAllModules
我应该在 Jenkins/pom.xml 的哪个阶段添加这个?现在,这个插件只有在我想升级到我选择的特定版本(比如3.00.0-Snapshot
)时才有用,否则,mvn release 插件应该自动将版本升级到2.50.1-SNAPSHOT
. 这是正确的理解吗?
如何优雅地处理这个 pom 版本更新问题?
提前致谢!