2013-04-22 94 views
5

我想控制在摇篮“全球性”的配置建立使用每个构建机器上的外部属性文件的脚本(DEV,CI,UAT,...),并指定使用命令行参数的文件名。摇篮/ Groovy的性能

例如gradle -DbuildProperties=/example/config/build.properties

我特别不想使用gradle.properties,因为我们已有的项目已经使用这种方法,并且(例如)我们希望能够修改数据库url和jdbc驱动程序而无需更改每个项目。

到目前为止已经试过: -

Properties props = new Properties() 
props.load(new FileInputStream("$filename")) 
project.setProperty('props', props) 

其作品,但有一个过时的警告,但我无法弄清楚如何避免这种情况。

在使用与ConfigSlurper时髦风格配置文件也试过: -

environments { 
    dev { 
     db.security { 
      driver=net.sourceforge.jtds.jdbc.Driver 
      url=jdbc:someserver://somehost:1234/some_db 
      username=userId 
      password=secret 
     } 
    } 
} 

但冒号和正斜杠导致异常的,我们不希望有惹配置与转义字符。

必须有一个非过时的方式来做到这一点 - 任何人都可以提出“正确”的方式做到这一点?

谢谢

+0

你试过'URL = “的jdbc:someserver://,某:1234/some_db”' – 2013-04-22 20:07:32

+0

是 - 没有工作.... – user1016765 2013-04-22 21:49:58

回答

6

您可以很容易地摆脱弃用的警告。你得到的消息可能看起来像这样:

按需创建属性(a.k.a.动态属性)已被弃用,并计划在Gradle 2.0中删除。有关更换动态属性的信息,请阅读http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html。 弃用动态属性:“真”:关于“根项目‘私人’”值“道具”。

它可以通过更换固定:

project.setProperty('props', props) 

project.ext.props = props 
5

只是为了补充由@Steinar给出的回应:

它仍然可以使用未来的语法:

project.ext.set('prop_name', prop_value) 

的情况下,你必须从文件的几个属性:

props.each({ project.ext.set(it.key, it.value)}) 
+1

稍微更惯用:'props.each {project.ext [it.key] = it.value}' – 2013-08-12 16:32:00