如何通过在gradle命令行上传递version属性来设置project.version?

我想用命令行传递的自定义版本构建JAR,例如:

当我执行这样的gradle构建任务时:

gradle build -Pversion=1.0 

应该生成myproject-1.0.jar。

我尝试将下面的行添加到build.gradle中 ,但它不起作用:

 version = project.hasProperty('version') ? project['version'] : '10.0.0' 

您无法从命令行覆盖现有项目属性,请查看此处 。 因此,尝试将版本变量重命名为与版本不同的版本,并在命令之前使用-P标志设置它,如:

 gradle -PprojVersion=10.2.10 build 

然后在你的build.gradle中

 if (project.hasProperty('projVersion')) { project.version = project.projVersion } else { project.version = '10.0.0' } 

或者像使用?:运算符一样

我发现您需要在gradle.properties文件中设置属性,并在build.gradle中引用它以使上述解决方案起作用。 还要确保选项出现在命令之前(如上所述)。

gradle.properties内容:

 version=1.0.12 

build.gradle内容:

 version "${version}" 

然后可以在命令行上覆盖版本:

 gradle -Pversion=1.0.13 publish 

如果将version条目移动到gradle.properties文件,您还可以:

 gradle clean build -Dorg.gradle.project.version=1.1 

如果您需要“未指定”以外的默认版本:

 version = "${version != 'unspecified' ? version : 'your-default-version'}" 

通过命令行传递版本:

 gradle build -P version=1.0 

version = (findProperty('version') == 'unspecified') ? '0.1' : version