You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Maven versions:set命令忽略SNAPSHOT版本?

解决Maven versions:set命令误改SNAPSHOT版本的问题

问题描述

在Jenkins构建Java项目时,使用以下命令设置版本:

mvn build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}${parsedVersion.qualifier?}.##JenkinsBuildNumber##

该命令能正确为正式版本追加Jenkins构建号(如0.3.0 => 0.3.12),但会误将SNAPSHOT版本转为正式版本:

1.0-SNAPSHOT => 1.0.12
2.0-SNAPSHOT => 2.0.54

需求是:SNAPSHOT版本保持不变,仅非SNAPSHOT版本追加构建号。

解决方案

使用versions:set插件的ifVersion参数,指定仅当项目版本不是SNAPSHOT时才执行版本修改操作。修改后的命令如下:

mvn build-helper:parse-version versions:set -DifVersion=!*-SNAPSHOT -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}${parsedVersion.qualifier?}.##JenkinsBuildNumber##

参数说明

  • -DifVersion=!*-SNAPSHOT:表示仅当当前项目版本不匹配*-SNAPSHOT模式时,才执行versions:set操作。
    • !表示取反,*-SNAPSHOT匹配所有以-SNAPSHOT结尾的版本。

效果验证

执行修改后的命令后,版本变化符合预期:

1.0-SNAPSHOT => 1.0-SNAPSHOT
2.0-SNAPSHOT => 2.0-SNAPSHOT
0.3.0 => 0.3.12
0.5.0 => 0.5.56
1.2.0 => 1.2.124

补充说明

之前尝试的-DignoredVersions=.*-SNAPSHOT参数是用于忽略依赖版本的筛选,并非控制当前项目版本是否被修改,因此无法达到预期效果。

内容的提问来源于stack exchange,提问作者Burner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:15:09