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