我正在编写一个gradle构建文件,它将为我们的产品安装一个基本的开发域.基本上所有真正的代码都将在自定义插件和自定义任务中.涉及的几个步骤相当重复(多个sudo调用,多个用户添加),我想将常见的东西封装到一个任务中.
例如:
task('addDBUser', type:AddUser) {
username = joeUser
}
task('startService', type:SudoExec) {
workingDir = "not/too/relevant"
commandLine = "/etc/init.d/coolService start"
}
Run Code Online (Sandbox Code Playgroud)
我想尽可能地重用Exec给我的各种功能(stdin,stdout等),同时自动提供样板("sudo ...").我很确定我可以扩展Exec而不是DefaultTask,但我不知道触发实际操作的标准方法.用我需要的东西修改commandLine属性似乎很容易,但是当我想要Exec实际去的时候,没有通用的"run()"等.
我是否打开Exec以确定哪种方法是它的工作方法然后直接调用它?或者是否有更通用的方法来实现我的目标?
erd*_*rdi 13
要查看为任务执行的方法,您可以检查源代码Exec并搜索标记为的方法@TaskAction.事实证明这是exec()方法,但通常你不想手动调用任务操作,但让Gradle为你做.我认为最好的想法是为您的自定义任务添加方法/设置器.它可能看起来像这样:
task addUser(type: AddUser) {
username = 'fromGradle'
}
class SudoExec extends Exec {
void sudoCommand(Object... arguments) {
executable 'sudo'
args = arguments.toList()
}
}
class AddUser extends SudoExec {
void setUsername(String username) {
sudoCommand('useradd', username)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4947 次 |
| 最近记录: |