Gradle def vs ext

Kam*_*man 16 gradle

使用ext.varname和有什么区别def varname.例如,以下代码似乎工作相同:

task copyLicenses {
    def outDir = project.buildDir.absolutePath + '/reports/license/'

    doLast {
        copy {
            from 'licenses'
            into outDir
            include '*'
        }
Run Code Online (Sandbox Code Playgroud)

似乎工作完全一样

task copyLicenses {
    ext.outDir = project.buildDir.absolutePath + '/reports/license/'

    doLast {
        copy {
            from 'licenses'
            into outDir
            include '*'
        }
Run Code Online (Sandbox Code Playgroud)

Ada*_*ker 23

关键字def来自Groovy,意味着变量具有局部范围.

使用ext.outDir意味着您将属性添加outDirExtraPropertiesExtension,可以将其视为项目具有名称的属性映射ext,并将您的属性放在此映射中以供以后访问.