从命令行重写gradle project.ext参数

从命令行重写gradle project.ext参数,gradle,groovy,Gradle,Groovy,我有一个gradle构建,其中我使用另一个gradle文件的属性: 格雷德尔先生 props.gradle只是groovy语法文件中的一组属性: ext { jdbcJarFile = "/jdbc/lib/ojdbc6.jar" system_oracle_driver = "oracle.jdbc.driver.OracleDriver" system_db_admin_user = "system" } 在以后的构建中,我可以访问以下属性: project.pro

我有一个gradle构建,其中我使用另一个gradle文件的属性:

格雷德尔先生

props.gradle只是groovy语法文件中的一组属性:

ext {
    jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
    system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
    system_db_admin_user = "system"
}
在以后的构建中,我可以访问以下属性:

project.property("jdbcJarFile")
我需要的是一种从命令行重写
props.gradle
中定义的任何属性的方法

例如

但当我尝试这个方法时,仍然会在
props.gradle
中声明值

我需要能够覆盖每个属性,并且我在该文件中有几十个属性。这里不允许手动检查每个属性

我怎样才能解决这个问题


Gradle版本为2.12。

您认为必须更改
道具。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"
}

要以更简洁的方式设置此属性,请将
props.gradle
更改为:

ext {
    jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
    system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
    system_db_admin_user = "system"
}
例如:

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'

但是我需要能够覆盖每个属性,并且我在该文件中有几十个属性。您需要重写
props.gradle
脚本以使用上面链接中所示的函数
ext {
    jdbcJarFile = "/jdbc/lib/ojdbc6.jar"
    system_oracle_driver = "oracle.jdbc.driver.OracleDriver"
    system_db_admin_user = "system"
}
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'