我有一个库,其中包含3个lib模块和1个示例模块。在部署任务之前,我要执行其他一些任务。在命令行中,它看起来像这样:./gradlew -x:example:clean -x:example:check -x:example:uploadArchives clean check :androidLib:assembleRelease uploadArchives
。
我想编写gradle任务以按示例模块之外的所有模块顺序执行所有任务。我可以做的:./gradlew deployAll
。我该怎么办?
我尝试这样做:
task deployAll {
doLast {
subprojects {
if(it.plugins.withType(com.android.build.gradle.AppPlugin)) return
it.tasks.getByName('clean').execute()
it.tasks.getByName('check').execute()
...
}
}
}
但不推荐使用execute()
,它仅执行第一个任务,而忽略任何任务。
答案 0 :(得分:1)
您可以在gradle任务中使用dependsOn
来确保任务以正确的顺序运行
task task1{
dependsOn task2
//Task one code
}
task2{
dependsOn task3
//task 3 code
}
task3{
//task3 code
}
因此在此示例中,如果您调用task1,则将首先执行任务3,然后执行task2,最后执行任务1,但是您只需要调用task1。
答案 1 :(得分:0)
您可以创建另一个任务并设置其他任务的依赖项
task deployAll {
dependsOn tasks.getByName('clean')
dependsOn(tasks.getByName('check'))
}
为了确保订单添加把它放在某处
tasks.getByName('check').mustRunAfter(tasks.getByName('clean'))