在gradle.properties文件中声明数组/散列表

我试图在gradle.properties文件中定义一个数组。 例如,当我在某个Gradle脚本中进行下一个操作时:

project.ext.mygroup = [
  myelement1: "myvalue1",
  myelement2: "myvalue2"
]
project.mygroup.put("myelement3", "myvalue3"); // As internally it works like a hashmap

然后列出属性,我得到:

mygroup: {myelement1=myvalue1, myelement2=myvalue2, myelement3=myvalue3}

因此,如果我尝试在gradle.properties文件中设置具有相同表单的属性:

mytestgroup={myelement1=myvalue1, myelement2=myvalue2}

然后在gradle脚本中我尝试访问这个属性:

project.mytestgroup.put("myelement3", "myvalue3");

我得到下一个错误:

No signature of method: java.lang.String.put() is applicable for argument types: (java.lang.String, java.lang.String) values: [myelement3, myvalue3]

这是因为属性“mytestgroup”被视为字符串而不是数组。

是否有人知道在gradle.properties文件中声明数组的正确语法是什么?

提前致谢


符号{myelement1=myvalue1, myelement2=myvalue2, myelement3=myvalue3}仅仅是调用Map.toString()的结果对象的字符串表示形式。 它在语法上不是正确的Groovy。

你的第一个例子是定义一个Map的正确方法。

def myMap = [ key : 'value' ]

定义一个数组是类似的。

def myArray = [ 'val1', 'val2', 'val3' ]

将该属性设置为JSON字符串

myHash = {"first": "Franklin", "last": "Yu"}
myArray = [2, 3, 5]

并使用JsonSlurper在构建脚本中解析它:

def slurper = new groovy.json.JsonSlurper()
slurper.parseText(hash) // => a hashmap
slurper.parseText(array) // => an array

JsonSlurper方式很好,但我想要一种更简洁的方式来定义一个简单的字符串或一个数组作为属性。 我通过声明属性来解决它:

mygroup=myvalue1

要么:

mygroup=myvalue1,myvalue2,myvalue3

然后在Gradle中检索属性:

Properties props = new Properties()
props.load(new FileInputStream(file('myproject.properties')))
props.getProperty('mygroup').split(",")

你会得到一个String数组。 注意逗号周围的空格字符。

链接地址: http://www.djcxy.com/p/82219.html

上一篇: Declare array/hashmap in gradle.properties file

下一篇: level computations using type families?