Почему в Gradle нельзя объявить свойство как выходные данные?

#input #properties #gradle #output #task

#ввод #свойства #gradle #вывод #задача

Вопрос:

введите описание изображения здесь

Если моя задача изменяет какое-либо свойство и при ее выполнении дважды инкрементная сборка не может быть выполнена. И каждый раз эту задачу приходится выполнять заново. Могу ли я использовать метод upToDateWhen() для некоторой проверки свойства?

Есть ли какая-то цель, чтобы свойство нельзя было объявить как выходные данные задачи?

Изображение взято из: (Muschko, Benjamin. «Подключение к жизненному циклу сборки». Gradle в действии. Н.п.: н.п., 2014)

Комментарии:

1. upToDateWhen определенно предназначен для проверки, должна ли выполняться задача. Не совсем понял, что вы имеете в виду, но если оно соответствует вашим потребностям, не стесняйтесь его использовать.

2. Я хочу спросить, почему Gradleware создал интерфейс TaskOutput без метода property?

3. Затем спросите команду gradle. Я полагаю, что это слишком временная сущность, чтобы регистрироваться как выходные данные задачи.

4. К вашему сведению: издательству Manning Publications может не понравиться, если вы используете защищенный авторским правом материал из какой-либо из их книг.

5. Извините. Я добавляю cite в книгу, из которой я взял фотографию.

Ответ №1:

Объявления ввода и вывода задачи используются для определения того, является ли задача «актуальной» с момента последней сборки, и поэтому ее можно безопасно пропустить в текущей сборке. Отсутствие какого-либо объявления выходных данных означает, что задача всегда устарела при запуске сборки. Поскольку свойства не сохраняются во всех сборках, задача, которая выводит свойство, всегда будет устаревшей и ее нужно будет запускать, что эквивалентно не указанию свойства в качестве выходных данных задачи.