我有一个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
中定义的任何属性的方法。
E.g。
gradle build -PjdbcJarFile=new/path
但是当我尝试这个时,我仍然在props.gradle
中声明了值。
我需要能够覆盖每个属性,并且我在该文件中有数十个属性。手动检查每个属性不是一个选项。
我该如何解决这个问题?
Gradle版本是2.12。
答案 0 :(得分:1)
认为您必须更改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'