如何定义可重用模块的自定义任务?就我而言,我想使用 Exec
使用 commandLine
运行脚本的任务特定于子项目的参数。
例如:
脚本
#!/usr/bin/env sh
echo "$@"
build.gradle
task customExecTask(type: Exec) {
if (project.name == "a") {
commandLine './script', "Project 'a'"
} else if (project.name == "b") {
commandLine './script', "Project 'b'"
}
}
project('a') {
build.dependsOn ':customExecTask'
}
project('b') {
build.dependsOn ':customExecTask'
}
编辑
或者是这样的:
task customExecTask(type: Exec) {
def dynamicVariable = ""
commandLine './script', dynamicVariable
}
project('a') {
task(':customExecTask').dynamicVariable = "Project 'a'"
build.dependsOn ':customExecTask'
}
project('b') {
task(':customExecTask').dynamicVariable = "Project 'b'"
build.dependsOn ':customExecTask'
}
预期结果:
$ gradle :a:build
Project 'a'
$ gradle :b:build
Project 'b'
最佳答案
请引用 Using Gradle Plugins 上的文档.
据此topic ,您可以将任务放在单独的 gradle 文件中 mytask.gradle
并在您添加到 build.gradle 的每个模块中:apply from: "${rootDir}/pathtomycustomgradlefile/mytask.gradle"
如果您需要更多逻辑来决定应用哪一个,您可以查看主题 Applying plugins to subprojects .
关于每个项目模块的 Gradle 可重用自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56538911/