use*_*765 5 configuration groovy properties gradle
我想在每个构建机器(dev,ci,uat,...)上使用外部属性文件控制Gradle构建脚本中的'global'配置,并使用命令行参数指定文件名.
例如 gradle -DbuildProperties=/example/config/build.properties
我特别不想使用gradle.properties,因为我们已经使用这种方法的现有项目(例如)我们希望能够修改数据库URL和jdbc驱动程序而无需更改每个项目.
到目前为止已经尝试过: -
Properties props = new Properties()
props.load(new FileInputStream("$filename"))
project.setProperty('props', props)
Run Code Online (Sandbox Code Playgroud)
哪个有效,但有一个弃用的警告,但我无法弄清楚如何避免这种情况.
还试过使用ConfigSlurper的groovy样式配置文件: -
environments {
dev {
db.security {
driver=net.sourceforge.jtds.jdbc.Driver
url=jdbc:someserver://somehost:1234/some_db
username=userId
password=secret
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是冒号和正斜杠会导致异常,我们不希望使用转义字符搞乱配置.
必须有一种不贬低的方式来做到这一点 - 任何人都可以提出"正确"的方式吗?
谢谢
您可以很容易地删除已弃用的警告.你得到的消息可能看起来像这样:
不建议按需创建属性(也称为动态属性),并计划在Gradle 2.0中删除它们.有关替换动态属性的信息,请阅读http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html.不推荐使用的动态属性:"root project'private'"上的"props",值:"true".
它可以通过替换来修复:
project.setProperty('props', props)
Run Code Online (Sandbox Code Playgroud)
同
project.ext.props = props
Run Code Online (Sandbox Code Playgroud)
小智 5
只是为了补充@Steinar给出的回应:
它仍然可以使用下一个语法:
project.ext.set('prop_name', prop_value)
Run Code Online (Sandbox Code Playgroud)
如果您有来自file的多个属性:
props.each({ project.ext.set(it.key, it.value)} )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6238 次 |
| 最近记录: |