Android Gradle,定义属性集合

Android Gradle,定义属性集合,android,gradle,collections,Android,Gradle,Collections,我正在使用Gradle脚本,以便自动部署三个Android环境。 其思想是定义一组属性,这些属性将用于保存每个环境中的所有数据。 范例 然后,对于每个操作复制代码,编辑文件。。。我只需要迭代每个环境 基本上,我的问题是我无法找到创建此集合的方法 有人能解释一下持有一组房产的最佳方式吗 I've already tried with: project.ext.dev= { envName = "live" buildFolder = "releaseLive" excludeFile

我正在使用Gradle脚本,以便自动部署三个Android环境。 其思想是定义一组属性,这些属性将用于保存每个环境中的所有数据。 范例

然后,对于每个操作复制代码,编辑文件。。。我只需要迭代每个环境

基本上,我的问题是我无法找到创建此集合的方法

有人能解释一下持有一组房产的最佳方式吗

I've already tried with:
project.ext.dev= {
 envName     = "live"
 buildFolder = "releaseLive"
 excludeFiles= ['**/..' ]
 }

project.ext.qa = {
 envName     = "live"
 buildFolder = "releaseLive"
 excludeFiles= ['**/..' ]
 }

project.ext.live = {...}

如何创建3个名称相同的独立文件(dev.properties、qa.properties和live.properties)。并在其中插入您的属性

envName     = "live"
buildFolder = "releaseLive"
excludeFiles= ['**/..' ]
之后,您可以在build.gradle配置中使用此属性。大概是这样的:

apply plugin: 'android'

android {...}

File propsFile = new File("dev.properties");
if (propsFile.exists()) {
    Properties properties = new Properties();
    properties.load(new FileInputStream(propsFile));

    //after loading properties you can get values from them
    println properties['envName'];
    println properties['buildFolder'];
    println properties['excludeFiles'];
}

所以,要使用某些环境中的值,您需要更改文件名。您可以创建一个文件名数组,并对其进行迭代。

我不完全确定您想做什么,但听起来您想使用映射。记住Gradle脚本只是groovy

比如说:

project.ext.dev = [
  envName:"DEV",
  buildFolder: "releaseLive",
 ]

 project.ext.qa = [
  envName:"QA",
  buildFolder: "releaseLive",
 ]


task printProps << {
  println project.dev.envName
  println project.qa.envName
}
project.ext.dev=[
名称:“DEV”,
buildFolder:“releaseLive”,
]
project.ext.qa=[
名称:“QA”,
buildFolder:“releaseLive”,
]

任务打印道具这可能也是一个好主意。我一直在尝试使用一个类class
Environment{String-type;String-folderBuild;String[]notinclude;}
和一个列表来保存所有环境
list-environmentList=new-arrarylist()我想知道哪一个更合适。如果你想在类中保留这些值,你应该初始化它们并手动添加每个值。如果您需要更多的env值,您将需要更改您的类签名,并再次手动添加该值。对于我来说,最好是单独保存在一个文件中,因为在更改值的情况下,您应该做更少的操作,您是对的。由于初始化,类解决方案毫无意义,我非常喜欢您的解决方案将配置保留在不同的文件中。谢谢。这是我的主意,所以我的错误是用{而不是[。谢谢。
project.ext.dev = [
  envName:"DEV",
  buildFolder: "releaseLive",
 ]

 project.ext.qa = [
  envName:"QA",
  buildFolder: "releaseLive",
 ]


task printProps << {
  println project.dev.envName
  println project.qa.envName
}