安全导航操作员(?。)不在gradle中工作?

时间:2014-03-08 19:22:30

标签: groovy gradle

我有这个文件gradle/build.gradle,内容如下

println "project name is: ${project.name}" // gives `project name is gradle`
println "expects null: ${project?.foo?.name}" // fail to run

在第二行中,似乎安全导航操作符?.无法按预期工作。当我只是在gradle --stacktrace下运行gradle/时,这是来自gradle的错误消息:

Caused by: groovy.lang.MissingPropertyException: Could not find property 'foo' on root project 'gradle'.

那么,为什么会这样呢?

1 个答案:

答案 0 :(得分:5)

安全导航操作符不会保护您不会调用无效属性,只有在有效属性为null时才会保护您。

gradle project class没有foo属性,因此您可以看到上述行为。

您可以protect the code拨打hasProperty