为我的无知事先道歉。我非常陌生。
我的目标是在build.gradle文件中有一些任务,其中一个文件' version.txt'每当我在项目根目录中运行gradle
terminal命令时,都会在我的项目目录中创建。这个' version.txt'文件需要包含构建的版本元数据,例如:
Version: 1.0
Revision: 1z7g30jFHYjl42L9fh0pqzmsQkF
Buildtime: 2016-06-14 07:16:37 EST
Application-name: foobarbaz app
(^ Revision将是HEAD的git commit hash
我尝试重用以下资源中的代码段,但无济于事,可能是因为这些资源已过时: http://mrhaki.blogspot.com/2015/04/gradle-goodness-use-git-commit-id-in.html http://mrhaki.blogspot.com/2010/10/gradle-goodness-add-incremental-build.html
我使用gradle版本2.14(这是最新版本)。
非常感谢任何帮助和/或见解。谢谢!
答案 0 :(得分:41)
你所指的例子几乎是正确的。通过几个小调整,它按预期工作:
import java.text.SimpleDateFormat
import org.ajoberstar.grgit.Grgit
plugins {
id "org.ajoberstar.grgit" version "1.5.1-rc.3"
}
version = 1.0
task versionTxt() {
doLast {
new File("$projectDir/version.txt").text = """
Version: $version
Revision: ${Grgit.open(dir: '.').head().id}
Buildtime: ${new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date())}
Application-name: foobarbaz app
"""
}
}
运行gradle versionTxt
以获得所需的输出。