Gradle Groovy 属性 逻辑结果出现错误?
Gradle Groovy property logical results appear wrong?
我在root/build.gradle
中有这个调试代码:
task copyJenkinsIdea(type: Copy) {
onlyIf {
project.hasProperty("isJenkins")
}
doLast {
println "Do Jenkins-specific setup"
println "${project.hasProperty("isJenkins")} && ${isJenkins} = ${(project.hasProperty("isJenkins") && isJenkins)}"
println "${project.hasProperty("isJenkins")} && ${project.isJenkins} = ${(project.hasProperty("isJenkins") && project.isJenkins)}"
println "true && false = ${(true && false)}"
}
from ".idea/Jenkins"
into ".idea"
}
我运行它用这个命令:
./gradlew --console=verbose -PisJenkins=false assembleDebug
root/app/build.gradle
中的任务依赖
preBuild.dependsOn(":copyJenkinsIdea")
它给了我这个输出:
> Configure project :app
[snip]
> Task :copyJenkinsIdea
Do Jenkins-specific setup
true && false = true
true && false = true
true && false = false
属性 不在 gradle.properties 文件中。
我一定是漏掉了什么,因为这是不可能的。
事实证明,Groovy 无法知道传入的 属性 是布尔值。
正在做
class java.lang.Boolean && class java.lang.String
true && "false"
这实际上是 true
。
我在root/build.gradle
中有这个调试代码:
task copyJenkinsIdea(type: Copy) {
onlyIf {
project.hasProperty("isJenkins")
}
doLast {
println "Do Jenkins-specific setup"
println "${project.hasProperty("isJenkins")} && ${isJenkins} = ${(project.hasProperty("isJenkins") && isJenkins)}"
println "${project.hasProperty("isJenkins")} && ${project.isJenkins} = ${(project.hasProperty("isJenkins") && project.isJenkins)}"
println "true && false = ${(true && false)}"
}
from ".idea/Jenkins"
into ".idea"
}
我运行它用这个命令:
./gradlew --console=verbose -PisJenkins=false assembleDebug
root/app/build.gradle
preBuild.dependsOn(":copyJenkinsIdea")
它给了我这个输出:
> Configure project :app
[snip]
> Task :copyJenkinsIdea
Do Jenkins-specific setup
true && false = true
true && false = true
true && false = false
属性 不在 gradle.properties 文件中。
我一定是漏掉了什么,因为这是不可能的。
事实证明,Groovy 无法知道传入的 属性 是布尔值。 正在做
class java.lang.Boolean && class java.lang.String
true && "false"
这实际上是 true
。