Properties Gradle/Groovy属性

Properties Gradle/Groovy属性,properties,configuration,groovy,gradle,Properties,Configuration,Groovy,Gradle,我希望使用每个生成计算机(dev、ci、uat等)上的外部属性文件控制渐变生成脚本中的“全局”配置,并使用命令行参数指定文件名 e、 g.gradle-DbuildProperties=/example/config/build.properties 我特别不想使用gradle.properties,因为我们有已经使用这种方法的现有项目,并且(例如)我们希望能够修改数据库URL和jdbc驱动程序,而不必更改每个项目 到目前为止,我们已经尝试:- Properties props = new Pr

我希望使用每个生成计算机(dev、ci、uat等)上的外部属性文件控制渐变生成脚本中的“全局”配置,并使用命令行参数指定文件名

e、 g.
gradle-DbuildProperties=/example/config/build.properties

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

到目前为止,我们已经尝试:-

Properties props = new Properties() 
props.load(new FileInputStream("$filename")) 
project.setProperty('props', props) 
它可以工作,但有一个不推荐的警告,但我不知道如何避免这种情况

还尝试将groovy样式的配置文件与ConfigSlurper一起使用:-

environments {
    dev {
        db.security {
            driver=net.sourceforge.jtds.jdbc.Driver
            url=jdbc:someserver://somehost:1234/some_db
            username=userId
            password=secret
        }
    }
}
但是冒号和正斜杠导致了异常,我们不想让转义字符把配置搞得一团糟

必须有一种不被反对的方法来做到这一点——有人能建议“正确”的方法吗


谢谢

您可以很容易地摆脱不推荐使用的警告。您收到的信息可能如下所示:

按需创建属性(也称为动态属性)已被弃用,并计划在Gradle 2.0中删除。有关动态属性替换的信息,请阅读。 不推荐使用的动态属性:“根项目“private”上的“props”,值:“true”

可通过更换以下部件进行固定:

project.setProperty('props', props) 


为了补充@Steinar给出的回答:

仍然可以使用下一个语法:

project.ext.set('prop_name', prop_value)
如果文件中有多个属性:

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

您尝试过
url=“jdbc:s”吗omeserver://somehost:1234/some_db“
Yes-不起作用……更惯用一点:
props.each{project.ext[it.key]=it.value}
props.each({ project.ext.set(it.key, it.value)} )