Логические результаты свойства Gradle Groovy выглядят неправильно?

У меня есть этот код отладки в 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.

Я должен что-то упустить, потому что это невозможно.

0
0
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, Groovy не может знать, что передаваемое свойство является логическим. это делает

class java.lang.Boolean && class java.lang.String
true && "false"

Что, собственно, и есть true.

Другие вопросы по теме