gpt4 book ai didi

gradle - 从命令行覆盖gradle project.ext参数

转载 作者:行者123 更新时间:2023-12-03 04:02:08 25 4
gpt4 key购买 nike

我有一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com