Maven Release Plugin无法更新下一开发版本问题求助
问题
使用Maven Release Plugin执行版本发布时,构件上传流程正常,但更新下一开发版本的最终提交中,pom.xml的开发版本被标记为<version>${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT</version>,而非命令中指定的1.2.1-SNAPSHOT。
插件配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.0.0-M1</version> <configuration> <checkModificationExcludes> <checkModificationExclude>pom.xml</checkModificationExclude> </checkModificationExcludes> </configuration> </plugin>
执行命令及控制台关键输出:
14:04:15 Executing Maven: -B -f /unpcommon-ankr-3147/workspace/UNP Jar Builder - non parameterized/ncprocessorcommon/pom.xml -DdevelopmentVersion=1.2.1-SNAPSHOT -DreleaseVersion=1.2.0 -Dresume=false release:clean release:prepare release:perform 14:04:16 [INFO] Scanning for projects... 14:04:16 [WARNING] 14:04:16 [WARNING] Some problems were encountered while building the effective model for com.paypal.notification.common:ncprocessorcommon:jar:${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT 14:04:16 [WARNING] 'version' contains an expression but should be a constant. @ line 11, column 14
原因分析
- pom.xml版本字段使用动态表达式:你的pom.xml中version字段并非固定常量,而是使用了
${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT这种Maven变量表达式。Maven Release Plugin在执行版本替换时,依赖固定版本字符串识别并替换内容,无法正确解析动态表达式,因此保留了原有变量格式。 - Maven官方不支持版本字段用表达式:控制台警告已明确指出
'version' contains an expression but should be a constant,Maven不建议在version字段使用变量,这会破坏构建稳定性,后续版本甚至可能不再支持此类写法。 - checkModificationExclude配置的间接影响:配置中排除了对pom.xml的修改检查,导致插件不会验证pom版本是否被正确替换为指定的开发版本,掩盖了问题,使得异常未被及时拦截。
内容的提问来源于stack exchange,提问作者Arnav Sengupta
相关产品推荐
相关产品推荐

