Gradle - 如何在 settings.gradle 中定义可选的额外属性

Flo*_*ows 2 gradle gradlew build.gradle

我希望能够在我的文件中使用可选的额外属性build.gradle。为此,我必须检查该属性是否已定义,但出现以下错误

无法在额外属性扩展上获取属性“prop”,因为它不存在

文件构建.gradle

[...]
def my_prop=''
if(gradle.ext.prop!= null && gradle.ext.prop != '')
    my_prop=gradle.ext.prop
Run Code Online (Sandbox Code Playgroud)

它正在使用此文件setting.gradle

gradle.ext.prop='PROP'
Run Code Online (Sandbox Code Playgroud)

当我在文件setting.gradle中注释行时它不起作用

//gradle.ext.prop='PROP'
Run Code Online (Sandbox Code Playgroud)

如何在 build.gradle 中检查是否gradle.ext.prop存在?

M.R*_*uti 5

ext属性的类型为ExtraPropertiesExtension:请参阅 此 DSL文档。

总结一下:

  • 如果未设置属性,该get(propName)方法将抛出异常,UnknownPropertyException
  • has(propName)方法可用于在尝试访问属性之前检查该属性是否已设置

对于您的情况,您可以使用has(name)如下方法

def my_prop = ''
if (gradle.ext.has("prop") && gradle.ext.prop != '') {
    println "Property PROP  found: $gradle.ext.prop"
    my_prop = gradle.ext.prop
    // or:  my_prop = gradle.ext('prop')
} else {
    println "Property PROP not set."
}
Run Code Online (Sandbox Code Playgroud)