【问题标题】:create version.txt file in project dir via build.gradle task通过 build.gradle 任务在项目目录中创建 version.txt 文件
【发布时间】:2016-11-11 13:11:21
【问题描述】:

提前为我的无知道歉。我是 gradle 的新手。

我的目标是在我的 build.gradle 文件中执行一些任务,其中每当我在项目根目录中运行 gradle 终端命令时,都会在我的项目目录中创建一个文件“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 哈希)

我尝试从以下资源中重用 sn-ps,但无济于事,可能是因为这些资源已过时: 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(这是最新版本)。

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

【问题讨论】:

  • 另外,使用 Gradle 在每次构建时自动调用:compileJava { dependsOn versionTxt }

标签: git file gradle build.gradle versioning


【解决方案1】:

您所指的示例几乎是正确的。通过一些小的调整,它可以按预期工作:

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
"""
    }
}

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

【讨论】:

  • 这按预期工作。我所指的例子确实几乎是正确的。再次感谢!
  • 小调整:leftShift 已弃用,应替换为 doLast 内部闭包。此外,您可以将文件创建缩短为单行 new File(filename).text = "blah"
  • 你可以用file(...).text = ...代替new File(...).text = ...
  • @deamon 但仅在较新的 Gradle 版本中......例如2.14(ForgeGradle使用)没有file方法
  • 我更新了版本(到最新的稳定版)和代码。
猜你喜欢
  • 2019-04-15
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2018-02-18
  • 2017-11-10
  • 1970-01-01
  • 2012-06-25
  • 2015-11-16
相关资源
最近更新 更多