我有一个gradle构建,在这里我使用另一个gradle文件中的属性:
build.gradle
apply from: "props.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
中定义的任何属性的方法。例如。
gradle build -PjdbcJarFile=new/path
但是当我尝试这样做时,我仍然在
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"
}
要在有大量属性时以一种更简洁的方式进行设置,请从以下位置更改
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'
关于gradle - 从命令行覆盖gradle project.ext参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729621/