Gradle 获取渐变构建的开始时间

Gradle 获取渐变构建的开始时间,gradle,Gradle,如何获取表示Gradle中构建过程开始时间的Date对象 一些背景 在我正在编写的插件中,我需要将构建的日期和时间存储在构建的存档中(它主要用于在应用程序的标题栏中显示日期和构建编号,以简化QA工作) 我希望对于正在构建的多个子项目具有相同的日期,因此理想情况下,我只希望使用构建的开始。作为一种解决办法,我把日期放在一个静态字段中,但这会伤害我的眼睛。我在源代码中看到,有多个org.gradle.util.Clock实例包含此类信息,但我无法找到从插件中检索的方法。我已使用以下代码检索构建时间时

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

一些背景 在我正在编写的插件中,我需要将构建的日期和时间存储在构建的存档中(它主要用于在应用程序的标题栏中显示日期和构建编号,以简化QA工作)


我希望对于正在构建的多个子项目具有相同的日期,因此理想情况下,我只希望使用构建的开始。作为一种解决办法,我把日期放在一个静态字段中,但这会伤害我的眼睛。我在源代码中看到,有多个
org.gradle.util.Clock
实例包含此类信息,但我无法找到从插件中检索的方法。

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

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

尽管如此,它还是远远不够理想,因为它使用了Gradle内部API:
getServices()
方法是在
org.Gradle.API.internal.GradleInternal
接口中定义的。

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

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

我无法让上述任何一种方法完全产生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.

这将在
$projectDir/build/distributions/sillyProject-.tar
下生成tar存档(即,当您运行
$gradle tar
时)。希望这对某人有所帮助。

你说得对;我想要的是有一些Gradle初始化日期,因为这样我的插件使用的时间戳将不同于Maven发布任务使用的时间戳。经过一番挖掘后,发现公共API中没有这样的方法,这很遗憾。请随意创建一个问题。但是,我不确定Maven发布任务是否使用Gradle初始化日期,或者甚至可以使用一个日期(我们在这里称为Maven)。仍然可以使用Gradle 1.5。就我而言,在为特定版本的软件编写插件时,依赖内部构件是可以的。。您只需要知道,您可能需要更改代码以支持将来的新版本,这肯定会得到时间,但无论何时调用“getCurrentTimestamp”,返回的日期都会更改。当您使用:def myTime=getCurrentTimeStamp()时,它会变得更加令人毛骨悚然,因为每次您引用“myTime”时,它都会有一个不同的时间:(仅供参考;)