我有一个 gradle 构建,其中使用另一个 gradle 文件中的属性:
构建.gradle
apply from: "props.gradle"
Run Code Online (Sandbox Code Playgroud)
props.gradle只是文件中具有 groovy 语法的一组属性:
ext {
jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
system_db_admin_user = "system"
}
Run Code Online (Sandbox Code Playgroud)
稍后在构建中我可以像这样访问此属性:
project.property("jdbcJarFile")
Run Code Online (Sandbox Code Playgroud)
props.gradle
我需要的是一种覆盖命令行中定义的任何属性的方法。
例如
gradle build -PjdbcJarFile=new/path
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,我仍然得到props.gradle
.
我需要能够覆盖每个属性,并且该文件中有数十个属性。此处无法手动检查每个属性。
我该如何解决这个问题?
Gradle 版本是 2.12。
认为您必须更改您的props.gradle
属性来检查属性,ext.jdbcJarFile
如果未在命令行上设置,则进行设置,即:
if(!hasProperty('jdbcJarFile')) {
ext.jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
}
ext {
system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
system_db_admin_user = "system"
}
Run Code Online (Sandbox Code Playgroud)
当您有大量属性时,要以更简洁的方式进行设置,请更改props.gradle
:
ext {
jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
system_db_admin_user = "system"
}
Run Code Online (Sandbox Code Playgroud)
对于类似的事情:
def defaultProperty(String name, defaultValue) {
if(!hasProperty(name)) {
ext."$name" = defaultValue
}
}
defaultProperty 'jdbcJarFile', '/jdbc/lib/ojdbc6.jar'
defaultProperty 'system_oracle_driver', 'oracle.jdbc.driver.OracleDriver'
defaultProperty 'system_db_admin_user', 'system'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2319 次 |
最近记录: |