Gradle6.3+Java14的Spring Boot项目:incrementVersion任务失败求解
解决Gradle任务
incrementVersion的buildNumber未知属性错误 问题原因
incrementVersion任务基于org.gradle.api.DefaultTask实现,但该任务类本身并没有buildNumber属性,而你的build-ci.gradle第10行直接引用了这个未定义的属性,导致构建失败。
解决步骤
1. 显式定义任务属性
在build-ci.gradle的incrementVersion任务块中,添加buildNumber属性的定义,可结合Gradle注解支持增量构建:
import org.gradle.api.tasks.Input task incrementVersion(type: DefaultTask) { // 定义buildNumber属性,@Input注解标记为任务输入(支持增量构建) @Input String buildNumber doLast { // 写入你的版本递增逻辑,比如修改version.properties或pom文件 println "执行版本递增,构建号:${buildNumber}" } }
2. 确保传入buildNumber的值
执行构建时,通过命令行参数传入构建号:
gradlew incrementVersion -PbuildNumber=1001
或者在脚本中设置默认值,避免未传参时出错:
// 在脚本顶部或任务块外设置默认值 def defaultBuildNumber = project.hasProperty('buildNumber') ? project.buildNumber : '0' // 给任务赋值 incrementVersion.buildNumber = defaultBuildNumber
3. 检查是否误用项目属性
如果buildNumber是项目级别的全局属性(通过-P传入),也可以直接在任务中引用项目属性,无需在任务内重复定义:
task incrementVersion(type: DefaultTask) { doLast { if (!project.hasProperty('buildNumber')) { throw new GradleException("请通过-PbuildNumber参数传入构建号") } def buildNum = project.buildNumber // 版本递增逻辑 } }
4. 确认任务类型合理性
如果这个版本递增任务有复杂逻辑,建议自定义任务类,把buildNumber等属性封装进去,避免直接用DefaultTask导致属性缺失。
内容的提问来源于stack exchange,提问作者Kristina
相关产品推荐
相关产品推荐

