Gradle,定义属性集合

时间:2013-12-10 15:11:14

标签: android gradle collections

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

[DEV, QA & Live]  {    
           buildFolder ="..."  
           envName     = "..." 
           excludeFiles=  "**/..." }

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

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

有人可以解释持有一组房产的最佳方式吗?

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

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

project.ext.live = {...}

2 个答案:

答案 0 :(得分:4)

我不完全确定你想做什么,但听起来你想要使用地图。记住,Gradle脚本只是很常见。

所以,比如:

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

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


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

请参阅http://groovy.codehaus.org/Collections

答案 1 :(得分:2)

如何创建具有相同名称的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'];
}

因此,要从某些环境中使用值,您需要更改文件名。您可以创建一个文件名数组,并迭代它们。

相关问题