Я хотел бы иметь одну задачу Gradle, taskA
, для запуска выполнения другой задачи, taskB
, если обе они не обновлены, но выполнение taskB
не должно вызывать выполнение taskA
, если только taskB
не актуально. Как это можно сделать?
Итак, здесь задействованы две части зависимости задачи: иерархия задач и последние проверки. Я хотел бы спать в состоянии настроить иерархию задач, но не включать в себя последнюю проверку для taskA
.
Контекст: taskA
должен выполняться, если его входные данные изменяются или taskB
выполняется на компьютере разработчика (то есть не на CI). taskB
должно выполняться, если оно не обновлено. Это связано с тем, что вывод taskB
- это исполняемый файл, который запускается taskA
. Причина, по которой taskA
не должен выполняться, если обновлен только исполняемый файл, заключается в том, что обновленный исполняемый файл может выдавать выходные данные, отличные от предыдущего исполняемого файла. Этот новый вывод может вызвать проблемы с другими частями сборки. Поскольку целью вывода является обеспечение того, чтобы пользователи следовали передовым методам, новый вывод обновленного исполняемого файла можно игнорировать в сборках CI.
Более конкретно, taskA
вызывает двоичный файл protolock
, который выводится taskB
. taskA
выводит файл proto.lock
, который должен зафиксировать инженер. Автоматическая фиксация этого файла может привести к неожиданностям для инженеров и подрыву цели этих проверок.