Я пишу файл сборки gradle, который установит базовый домен разработки для нашего продукта. По сути, весь настоящий код будет в пользовательских плагинах и пользовательских задачах. Несколько из этих шагов являются довольно повторяющимися (несколько вызовов sudo, несколько пользовательских добавлений), и я хотел бы инкапсулировать общий материал в задачу.
Например:
task('addDBUser', type:AddUser) {
username = joeUser
}
task('startService', type:SudoExec) {
workingDir = "not/too/relevant"
commandLine = "/etc/init.d/coolService start"
}
Я хотел бы повторно использовать различные функциональные возможности, которые Exec получает от меня (stdin, stdout и т.д.) как можно более аккуратно, при этом автоматически поставляя шаблон ( "sudo..." ). Я почти уверен, что могу просто расширить Exec вместо DefaultTask, но я не знаю стандартного способа запуска фактического действия. Кажется, легко изменить свойство commandLine с тем, что мне нужно, но нет никакого общего "run()" или тому подобного для использования, когда я хочу, чтобы Exec действительно ушел.
Я открываю Exec, чтобы определить, какой метод это метод работы, а затем вызвать его напрямую? Или существует более общий способ достижения моей цели?