在gradle.properties文件中声明array/hashmap

gom*_*udo 8 arrays groovy properties gradle

我正在尝试在gradle.properties文件中定义一个数组.例如,当我在一些gradle脚本中执行下一个操作时:

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

然后我列出属性,我得到:

mygroup: {myelement1=myvalue1, myelement2=myvalue2, myelement3=myvalue3}
Run Code Online (Sandbox Code Playgroud)

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

mytestgroup={myelement1=myvalue1, myelement2=myvalue2}
Run Code Online (Sandbox Code Playgroud)

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

project.mytestgroup.put("myelement3", "myvalue3");
Run Code Online (Sandbox Code Playgroud)

我收到下一个错误:

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

这是因为属性"mytestgroup"被视为字符串而不是数组.

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

提前致谢

Mar*_*ira 6

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

您的第一个示例是定义的正确方法Map

def myMap = [ key : 'value' ]
Run Code Online (Sandbox Code Playgroud)

定义数组是相似的。

def myArray = [ 'val1', 'val2', 'val3' ]
Run Code Online (Sandbox Code Playgroud)