Gradle 相当于 maven-versions-plugin

Gradle equivalent of maven-versions-plugin

这是我的 build.gradle:

group 'whatever'
version '1.0.0-SNAPSHOT'

...

dependencies {
    compile 'whatever:2.2.1-SNAPSHOT'
}

我想自动化发布过程,其中包括需要将两个版本都设置为特定值,例如1.1.02.2.0 仅使用命令行。任何类型的自动增量都不是一种选择。

对于 Maven,我会使用 maven-versions-plugin:

mvn versions:set -DnewVersion=${WHATEVER_NEW_VERSION}

如何对 Gradle 执行相同的操作?我只找到 this 个未回答的问题。必须有一些简单的方法来做到这一点?

虽然与发布无关,但传递 command-line 属性的一种方法如下:

gradle -PWHATEVER_NEW_VERSION=2.0.0

考虑以下 build.gradle 片段:

def newVersion = project."WHATEVER_NEW_VERSION"
println newVersion

另一种方法请参阅 this project 中的 ~/utils/gradle/version.gradle。它为主要版本、次要版本和增量版本使用单独的环境变量,然后自动构建字符串。因为它驻留在 gradle 目录中,所以可以简单地导入到 build.gradle 中,这隐藏了一些样板文件。

我最终将版本号提取到 gradle.properties 并使用 sed:

将它们更新为自动构建脚本的一部分
sed -i -e \"/someVersionNumber=/ s/=.*/=${SOME_NEW_VERSION_NUMBER}/\" gradle.properties

这就是我想要的。虽然对我来说,来自 Maven 背景,这似乎并不自然。稍后我可能会研究另一种选择。

成功使用了Axion Release Plugin几次,非常满意。 Functionality-wise 它最接近 Maven 的