渐变自定义任务中的集属性



我有一个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)
}
}

最新更新