Получить время начала сборки gradle - PullRequest
4 голосов
/ 11 августа 2011

Как получить Date объект, представляющий время начала процесса сборки в Gradle?

Некоторый фон

В плагине, который я пишу, мне нужно сохранить датуи время сборки в построенном архиве (в основном это используется для отображения даты вместе с номером сборки в строке заголовка приложения, чтобы облегчить жизнь QA).

Я хочу иметь ту же дату длянесколько подпроектов, которые собираются, поэтому в идеале я хотел бы просто использовать начало сборки.В качестве обходного пути я держу дату в статичном поле, но это ранит мои глаза.Я видел в источнике, что есть несколько org.gradle.util.Clock экземпляров, которые содержат такую ​​информацию, но я не могу найти способ извлечь ее из плагина.

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Ваш плагин может просто установить / получить динамическое свойство корневого проекта:

def root = project.rootProject
if (!root.hasProperty("startTime")) {
    root.startTime = new Date()
}
// do whatever necessary with root.startTime
3 голосов
/ 11 августа 2011

Мне удалось получить часы времени сборки со следующим кодом:

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

Тем не менее, он далек от идеала, поскольку использует внутренний API Gradle: getServices() метод определен в org.gradle.api.internal.GradleInternal интерфейс.

1 голос
/ 04 октября 2015

Я не смог заставить ни один из вышеперечисленных методов полностью произвести то, что искал ОП (и я), поэтому я придумал это 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.

Это создает архив tar (т.е. когда вы запускаете $ gradle tar) в $projectDir/build/distributions/sillyProject-<currentTimestamp>.tar. Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...