获得开始构建gradle的时间

时间:2011-08-11 13:50:07

标签: gradle

如何在Gradle中获取表示构建过程开始时间的Date对象?

一些背景

在我正在编写的插件中,我需要在构建的存档中存储构建的日期和时间(它主要用于在应用程序的标题栏中显示日期和内部版本号,以使QA生活更轻松)。

我希望为正在构建的多个子项目保留相同的日期,所以理想情况下我只想使用构建的开始。作为一种解决方法,我将日期保存在静态字段中,但它会伤害我的眼睛。我在源代码中看到有多个org.gradle.util.Clock实例包含这些信息,但我找不到从插件中检索一个的方法。

3 个答案:

答案 0 :(得分:4)

您的插件可以在根项目上设置/获取动态属性:

def root = project.rootProject
if (!root.hasProperty("startTime")) {
    root.startTime = new Date()
}
// do whatever necessary with root.startTime

答案 1 :(得分:3)

我已设法使用以下代码检索构建时钟:

Clock clock = project.gradle.services.get(BuildRequestMetaData.class).buildTimeClock
Date startDate = new Date(clock.getStartTime())

尽管如此,它还远非理想,因为它使用了Gradle内部API:getServices()接口定义了org.gradle.api.internal.GradleInternal方法。

答案 2 :(得分:1)

我无法获得上述任何一种方法来完全生成OP(和我)正在寻找的东西,所以我想出了这个build.gradle

import java.text.SimpleDateFormat
import java.util.Date

apply plugin: 'java'

def getCurrentTimestamp ()
{
  Date today = new Date ()
  SimpleDateFormat df = new SimpleDateFormat ("MM-dd-yyyy_hh-mm")
  return df.format (today)
}

task tar (type: Tar) {
  from 'src/'
  baseName 'sillyProject'
  classifier getCurrentTimestamp ()
  extension 'tar'
}

repositories {
  mavenCentral()
}

dependencies {
    // etc.

这会在$ gradle tar下生成tar存档(即,当您运行$projectDir/build/distributions/sillyProject-<currentTimestamp>.tar时)。希望这有助于某人。