Gradle的script API

当 Gradle 执行一个脚本时,它将脚本编译为一个实现了 Script 接口的类,这意味着所有由该Script 接口声明的属性和方法在脚本中均可使用。

Gradle 的domain model中,所有增强的对象都可以允许用户定义额外属性,例如项目(project)、任务(task)和源码集(source set)等等。额外属性可以通过所属对象的 ext 属性进行添加,读取和设置。当然也可以使用 ext 块同时添加多个属性。

看个例子:

apply plugin: "java"
ext {
    springVersion = "3.1.0.RELEASE"
    emailNotification = "jerry@sap.com"
}
sourceSets.all { ext.purpose = null }
sourceSets {
    main {
        purpose = "production"
    }
    test {
        purpose = "test"
    }
    plugin {
        purpose = "production"
    }
}
task printProperties << {
    println springVersion
    println emailNotification
    sourceSets.matching { it.purpose == "production" }.each { println it.name }
}   

逐行分析:

通过ext代码块将两个扩展属性添加到project对象中去。

将purpose扩展属性添加到所有的sourceSets对象中去。

给名为main,test和plugin的sourceSets对象的purpose属性分别赋值。

最后gradle printProperties打印输出:

Groovy会自动地把一个属性的引用转换为对适当的 getter 或 setter 方法的调用:

    println project.buildDir
    println getProject().getBuildDir()

输出:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

汪子熙 CSDN认证博客专家 前端框架 Node.js SAP
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。14 多年的 SAP 产品开发生涯,Jerry 曾经先后参与 SAP Business ByDesign,SAP CRM,SAP Cloud for Customer,SAP S/4HANA,SAP Commerce Cloud(电商云)等标准产品的研发工作。
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值