通过build.gradle任务在项目目录中创建version.txt文件

Chr*_*ney 29 versioning git file gradle build.gradle

为我的无知而事先道歉.我很陌生.

我的目标是在build.gradle文件中有一些任务,每当我gradle在项目根目录中运行terminal命令时,在我的项目目录中创建一个文件'version.txt' .此"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(这是最新版本).

非常感谢任何帮助和/或见解.谢谢!

Jk1*_*Jk1 49

你所指的例子几乎是正确的.通过几个小调整,它按预期工作:

import java.text.SimpleDateFormat
import org.ajoberstar.grgit.Grgit

plugins {
    id "org.ajoberstar.grgit" version "1.7.2"
}

version = 1.0

task versionTxt()  {
    doLast {
        new File(projectDir, "version.txt").text = """
Version: $version
Revision: ${grgit.head().abbreviatedId}
Buildtime: ${new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date())}
Application-name: foobarbaz app
"""
    }
}
Run Code Online (Sandbox Code Playgroud)

运行gradle versionTxt以获得所需的输出.

  • 你可以使用 `file(...).text = ...` 而不是 `new File(...).text = ...`。 (5认同)
  • 小调整: leftShift 已弃用,应替换为 `doLast` 内部闭包。此外,您可以将文件创建缩短为一行 `new File(filename).text = "blah"` (2认同)
  • 在基于 Kotlin 的 DSL 中,它将是 `file("filePath").writeText("file content")` (2认同)