Arrays 在gradle.properties文件中声明数组/哈希映射

Arrays 在gradle.properties文件中声明数组/哈希映射,arrays,groovy,properties,gradle,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 然后我列出属性,我得到: mygroup: {myele

我试图在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

第一个示例是定义
映射的正确方法

def myMap = [ key : 'value' ]
定义数组与此类似

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

将属性设置为JSON字符串

myHash = {"first": "Franklin", "last": "Yu"}
myArray = [2, 3, 5]
并在构建脚本中使用以下命令对其进行分析:


JsonSlurper方法很好,但我想要一种更简洁的方法来将简单字符串或数组定义为属性。我通过将财产声明为:

mygroup=myvalue1
或:

然后在Gradle中使用以下命令检索属性:

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

您将得到一个字符串数组。请小心逗号周围的空格。

您不能在
gradle.properties
中设置列表或映射值,因为这是一个纯Java属性文件,其中所有值都是字符串。谢谢标记!我知道这是在groovy中定义array/hashmap的正确方法,但我要问的是gradle.properties文件(根据Peter的回答),它不是groovy,而是java属性文件。Peter是正确的,属性文件中的值只能是字符串。
mygroup=myvalue1,myvalue2,myvalue3
Properties props = new Properties()
props.load(new FileInputStream(file('myproject.properties')))
props.getProperty('mygroup').split(",")