Gradle 在自定义任务中设置 属性
Gradle set property in custom task
我有一个 gradle 任务,其中 运行 一些代码检查,通常在构建期间执行。
由于这个任务需要很长时间,我实现了一个标志,以便在正常构建期间它不是 运行,但需要通过 属性:
启用
tasks.withType(MyTaskType) {
//config switch "-Pcheck=true"
enabled = project.getProperties().getOrDefault('check', false).equals('true')
}
现在我可以通过以下方式在终端中启动它:./gradlew build -Pcheck=true
现在我也想要一个任务"buildWithCheck",设置这个属性然后执行构建任务
我该怎么做?我尝试了什么:
task buildWithCheck {
doFirst{
project.getProperties().put('check','true')
}
dependsOn tasks['build']
}
任务 enabled
在 DAG 创建的早期就被评估,因此不能被其他任务覆盖。你想要的是 onlyIf
条件。下面的代码允许检查 运行 两种方式:
gradle test -Pcheck=true
gradle testSlowly
build.gradle:
ext {
check = project.properties['check'] ?: "false"
}
task test {
onlyIf { project.ext.check == "true" }
doLast {
println "TEST"
}
}
task testSlowly {
doFirst{ project.ext.check = "true" }
finalizedBy 'test'
}
build.gradle.kts(为了好玩,我也尝试在 Kotlin 中这样做)
var check: String by extra { properties.getOrDefault("check", "false") as String }
tasks {
val test by registering {
onlyIf { check == "true" }
doLast {
println("TEST")
}
}
register("testSlowly") {
doFirst { check = "true" }
finalizedBy(test)
}
}
我有一个 gradle 任务,其中 运行 一些代码检查,通常在构建期间执行。 由于这个任务需要很长时间,我实现了一个标志,以便在正常构建期间它不是 运行,但需要通过 属性:
启用tasks.withType(MyTaskType) {
//config switch "-Pcheck=true"
enabled = project.getProperties().getOrDefault('check', false).equals('true')
}
现在我可以通过以下方式在终端中启动它:./gradlew build -Pcheck=true
现在我也想要一个任务"buildWithCheck",设置这个属性然后执行构建任务
我该怎么做?我尝试了什么:
task buildWithCheck {
doFirst{
project.getProperties().put('check','true')
}
dependsOn tasks['build']
}
任务 enabled
在 DAG 创建的早期就被评估,因此不能被其他任务覆盖。你想要的是 onlyIf
条件。下面的代码允许检查 运行 两种方式:
gradle test -Pcheck=true
gradle testSlowly
build.gradle:
ext {
check = project.properties['check'] ?: "false"
}
task test {
onlyIf { project.ext.check == "true" }
doLast {
println "TEST"
}
}
task testSlowly {
doFirst{ project.ext.check = "true" }
finalizedBy 'test'
}
build.gradle.kts(为了好玩,我也尝试在 Kotlin 中这样做)
var check: String by extra { properties.getOrDefault("check", "false") as String }
tasks {
val test by registering {
onlyIf { check == "true" }
doLast {
println("TEST")
}
}
register("testSlowly") {
doFirst { check = "true" }
finalizedBy(test)
}
}