【发布时间】:2015-06-26 04:54:17
【问题描述】:
我承认我对 gradle 很陌生,但我没想到无法理解像下面的示例这样简单的东西。我可以阅读有关使用 hasProperty(String propertyName) 调用检查项目属性是否已设置的 gradle 文档,而我坐在这里,不知道为什么这么基本的东西不起作用。
我相信我的思维一定是非常“像蚂蚁”的,以至于我肯定错过了一些普通的基本内容
task printSystem() << {
println system
println "has property: " + hasProperty("system")
}
并使用以下命令调用该任务:
$gradle printSystem -Psystem=mySystem
mySystem
has property: null
所以我的问题是:
- 为什么系统打印出来但hasProperty返回
null? - 我应该如何检查名为“system”的项目属性是否存在?
- 项目属性与系统属性的测试方法是否不同?
- 如何从命令行传递系统属性?
这是来自 gradle 文档,我相信我没看错
19.2.1。检查项目属性
您可以像使用变量一样使用其名称来访问构建脚本中的项目属性。如果该属性不存在,则会抛出异常并且构建将失败。如果您的构建脚本依赖于用户可能设置的可选属性,可能在 gradle.properties 文件中,您需要在访问它们之前检查它们是否存在。您可以使用返回 true 或 false 的方法 hasProperty('propertyName') 来做到这一点。
【问题讨论】:
-
你看到我的回答了吗?能解决他的问题吗?如果是,请接受。
-
您的答案是在星期五下午与我的办公室同事一起享受周末饮料的时候到达的 :-) 我今天测试了您的解决方案并且它有效。我希望通过输入
project.hasProperty('propertyName')而不是现在显示的内容,文档会更清楚地说。此外,当某些东西应该返回 true 或 false 并返回 null 时,反而会增加混乱。非常感谢。
标签: gradle