Appearance
任务顺序控制
mustRunAfter
mustRunAfter 确保当两个任务都被执行时,一个必须在另一个之后运行。不会触发被依赖任务的执行。
kotlin
tasks.register("migrateDB") { doLast { println("数据库迁移") } }
tasks.register("startApp") { doLast { println("启动应用") } }
tasks.named("startApp") {
mustRunAfter("migrateDB")
}bash
# 同时执行两个任务,migrateDB 先执行
./gradlew migrateDB startApp
# 只执行 startApp,不触发 migrateDB
./gradlew startAppshouldRunAfter
shouldRunAfter 是弱顺序约束,在存在循环依赖风险时 Gradle 会忽略它:
kotlin
tasks.named("test") {
shouldRunAfter("unit")
}finalizedBy
finalizedBy 定义终结任务,无论主任务成功还是失败,终结任务都会执行(常用于清理):
kotlin
tasks.register("setupDB") { doLast { println("启动测试数据库") } }
tasks.register("teardownDB") { doLast { println("关闭测试数据库") } }
tasks.named("test") {
dependsOn("setupDB")
finalizedBy("teardownDB") // 测试完成后(无论成败)关闭数据库
}综合示例:测试流程
kotlin
tasks.register("startTestServer") {
group = "verification"
doLast { println("启动测试服务器 :8080") }
}
tasks.register("stopTestServer") {
group = "verification"
doLast { println("关闭测试服务器") }
}
tasks.named<Test>("test") {
dependsOn("startTestServer")
finalizedBy("stopTestServer")
}
tasks.named("stopTestServer") {
mustRunAfter("test")
}下一步
- 内置任务类型 - 了解 Gradle 提供的常用任务类