将属性传递给gradle构建

时间:2015-06-26 04:54:18

标签: gradle

我承认我很贪心,但我没想到会像下面的例子那样简单地理解。我可以使用hasProperty(String propertyName)调用来阅读关于检查项目属性是否已设置的gradle文档,我坐在这里并且不知道为什么这么基本的东西不起作用。

我相信我的思想一定是这么多"蚂蚁喜欢"我确实缺少一些普通的基本

task printSystem() << {
    println system
    println "has property: " + hasProperty("system")
}

并使用以下命令调用该任务:

$gradle printSystem -Psystem=mySystem
mySystem
has property: null

所以我的问题是:

  1. 为什么打印出系统但hasProperty返回null
  2. 我应该如何检查是否存在名为&#34; system&#34;?
  3. 的项目属性
  4. 是否有不同的方法来测试项目属性而不是系统属性?
  5. 您如何从命令行传递系统属性?
  6. 这是来自gradle文档,我相信我正在阅读它

    19.2.1。检查项目属性

    您可以使用其名称来访问构建脚本中的项目属性,就像使用变量一样。如果此属性不存在,则将抛出异常并且构建将失败。如果构建脚本依赖于用户可能设置的可选属性(可能在gradle.properties文件中),则需要在访问它们之前检查是否存在。您可以使用hasProperty(&#39; propertyName&#39;)方法执行此操作,该方法返回true或false。

1 个答案:

答案 0 :(得分:16)

您需要在hasProperty实例上显式调用project - 如果没有它,则在某些本地上下文中调用hasProperty。以下示例有效:

task printSystem() << {
    println system
    println "has property: " + project.hasProperty("system")
}
  1. 由于不存在属性(脚本中未定义system),因此<{1}}实例 。如果您未通过project媒体资源,则会在system上抛出异常。
  2. println
  3. 不确定我是否理解正确,但您可以通过project.hasProperty('propName')类通过project实例和系统属性访问项目属性。
  4. 使用System开关 - -D