Cas*_*alT 13 gradle build.gradle
我可能会忽略一些非常核心/明显的东西,但是如何创建一个始终为每个任务/目标执行的任务?
我可以这样做:
task someTask << {
println "I sometimes run"
}
println "I always run"
Run Code Online (Sandbox Code Playgroud)
但是,在任务中使用始终运行的部分会更加可取.
我最接近的是:
task someTask << {
println "I sometimes run"
}
println "I always run"
void helloThing() {
println "I always run too. Hello?"
}
helloThing()
Run Code Online (Sandbox Code Playgroud)
因此,使用方法是一个"好"的解决方案,但我希望有一种方法来专门指定/重用任务.
希望有人有办法做到这一点.:)
Pet*_*ser 10
假设目标是打印系统信息,您可以随时在配置阶段(在任务声明之外)打印信息,并且具有systemStatus
不执行任何操作的虚拟任务(因为无论如何都打印了信息).或者您可以将其作为常规任务实现,并确保通过添加":systemStatus"
作为gradle.startParameter.taskNames
(字符串列表)的第一项来模拟总是键入的人来运行任务gradle :systemStatus ...
.或者你可以利用钩子gradle.projectsLoaded { ... }
来打印那里的信息.
这会为给定构建中的每个项目中的每个任务附加一个闭包:
def someClosure = { task ->
println "task executed: $task"
}
allprojects {
afterEvaluate {
for(def task in it.tasks)
task << someClosure
}
}
Run Code Online (Sandbox Code Playgroud)
如果你需要每个构建只调用一次函数/闭包,在所有项目的所有任务之前,使用:
task('MyTask') << {
println 'Pre-build hook!'
}
allprojects {
afterEvaluate {
for(def task in it.tasks)
if(task != rootProject.tasks.MyTask)
task.dependsOn rootProject.tasks.MyTask
}
}
Run Code Online (Sandbox Code Playgroud)
如果你需要每个构建只调用一次函数/闭包,在所有项目的所有任务之后,使用:
task('MyTask') << {
println 'Post-build hook!'
}
allprojects {
afterEvaluate {
for(def task in it.tasks)
if(task != rootProject.tasks.MyTask)
task.finalizedBy rootProject.tasks.MyTask
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6714 次 |
最近记录: |