我在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版本插件
<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,类似
mvn versions:set -DnewVersion=3.00.0-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false
然后]mvn versions:commit -DprocessAllModules
我应该在Jenkins / pom.xml的哪个阶段添加它?现在,此插件仅在我想更改到自己选择的特定版本(例如3.00.0-Snapshot
)时才有用,否则,mvn版本插件应自动将版本更改为2.50.1-SNAPSHOT
。那是正确的理解吗?
我如何优雅地处理此Pom版本更新问题?
提前感谢!
我不明白你为什么想要版本插件。
首先,您不需要将<version>
标记添加到模块中。您需要指定父级的版本,但是您可以从父级继承您的版本(相同)。
第二,maven发行插件具有参数releaseVersion
和developmentVersion
,可用于在命令行上设置发行版和将来的开发版本。