这是我的
build.gradle
:
group 'whatever'
version '1.0.0-SNAPSHOT'
...
dependencies {
compile 'whatever:2.2.1-SNAPSHOT'
}
我想自动化发布过程,其中包括需要将两个版本设置为特定值,例如
1.1.0
或 2.2.0
仅使用命令行。任何类型的自动增量都不是一个选择。
使用 Maven,我会使用
maven-versions-plugin
来完成此操作:
mvn versions:set -DnewVersion=${WHATEVER_NEW_VERSION}
如何使用 Gradle 做同样的事情?我只发现this未回答的问题。一定有一些简单的方法可以做到这一点吗?
虽然与发布无关,但传递命令行属性的一种方法如下:
gradle -PWHATEVER_NEW_VERSION=2.0.0
考虑以下
build.gradle
片段:
def newVersion = project."WHATEVER_NEW_VERSION"
println newVersion
请参阅
此项目中的
~/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几次,非常满意。就功能而言,它最接近 Maven 的
我已在
build.gradle.kts
上添加了这一行
version = System.getenv("NEW_VERSION") ?: "0.0.1-SNAPSHOT"
不完全等效,但在 CI/CD 脚本中运行良好。