Как записать переменные в файл свойств Gradle при выполнении задачи? - PullRequest
1 голос
/ 12 апреля 2019

У меня есть такой случай.Мне нужно сохранить текущую дату после каждого выпуска сборки с Gradle.Есть ли возможность сохранить дату в файле gradle.properties, чтобы я мог прочитать его в следующем задании на сборку?

Мои файлы: gradle.properties:

version=0.0.1
date=

build.gradle:

task changeDate() {
    file = new File("changelogs/CHANGELOG_RELEASE_FROM_"+getDate()+".md");
    project.setProperty("date",getDate());
}

Это не работает и не сохраняет переменную даты в gradle.properties.

Поэтому я бы хотел, чтобы в моем файле gradle.properties была указана дата выпуска:

gradle.properties:

version=0.0.1
date=12.04.2019

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Методы getProperty, findProperty и setProperty не имеют прямого отношения к файлу gradle.properties.Вместо этого они предоставляют доступ к свойствам в области действия экземпляра Project, по которому оценивается build.gradle.Эта область включает в себя множество различных свойств, в том числе так называемые дополнительные свойства (из файлов gradle.properties).

Тем не менее, Gradle предоставляет тип задачи для этой функции, называемый WriteProperties.Просто укажите целевой файл и определите некоторые свойства:

task changeDate(type: WriteProperties) {
    outputFile = file('gradle.properties')
    property 'date', getDate()
}
1 голос
/ 12 апреля 2019

Вы можете попытаться сделать что-то вроде:

import java.time.*;

task rel {
    doLast {
        ant.propertyfile(file: "gradle.properties") {
            entry( key: "date", value: LocalDateTime.now())
        }
    }
}

Предположим, rel - это ваша задача release или любая другая задача, выполнение которой означает, что вы отпустили выполненное действие.Вы должны добавить к его конфигурации закрытие doLast, чтобы запустить некоторый код после выполнения задачи.В этом закрытии вы изменяете какое-то свойство в файле свойств.

LocalDateTime и его импорт добавляются только для примера, вы можете использовать другой метод для получения текущей даты.

В вашемВ таком случае это может выглядеть так:

task changeDate() {
    doLast {
        ant.propertyfile(file: "gradle.properties") {
            entry( key: "date", value: LocalDateTime.now())
        }
    }
}

Но вы должны каким-то образом выполнить changeDate, если это не так.

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