gradle学习(11)-编写构建脚本

最后更新于:2022-04-01 06:51:43

## 1.DSL gradle脚本语言是一个领域专业语言,以groovy为基础。 ## 2.project api 调用project的api来获取和项目有关的信息 ~~~ task check<<{ println name println project.name } ~~~ ~~~ qianhuis-Mac-mini:0110 qianhui$ gradle -q check check 0110 ~~~ 由此可以看出第一个name是指任务名,第二个project.name打印项目的名称。如果你把println name移到任务外,他就会打印项目的名称 ~~~ println name task check<<{ println project.name } ~~~ ~~~ qianhuis-Mac-mini:0110 qianhui$ gradle -q check 0110 0110 ~~~ 其他一些project相关的属性 ~~~ println name task check<<{ //项目名 println project.name //项目相对路径 println project.path //项目描述 println project.description //项目的绝对路径 println project.projectDir //项目的build文件绝对路径 println project.buildDir //项目所在的group println project.group //项目的版本号 println project.version //项目的ant对象 println project.ant } ~~~ 输出 ~~~ qianhuis-Mac-mini:0110 qianhui$ gradle -q check 0110 0110 : null /Users/qianhui/Documents/Developer/gradle_project/0110 /Users/qianhui/Documents/Developer/gradle_project/0110/build unspecified org.gradle.api.internal.project.DefaultAntBuilder@7cc03cf7 ~~~ ## 3.脚本api 当执行脚本的时候,会将脚本编译成一个class,该class是实现Script 接口的。说明你在脚本中所定义的方法和属性都存在于该script对象中。 ## 4.自定义变量 你可以在你自己写的脚本中定义本地变量。 运用groovy基础语法,可以使用def定义一个本地变量。 ~~~ def dest = "this is myself" task check<<{ println dest } ~~~ ~~~ qianhuis-Mac-mini:0110 qianhui$ gradle -q check this is myself ~~~ ## 5.自定义属性 ext块可以一次性添加多个属性 ~~~ apply plugin: "java" ext { springVersion = "3.1.0.RELEASE" emailNotification = "build@master.org" } sourceSets.all{ ext.purpose = null } sourceSets{ main{ purpose = "production" } test{ purpose = "test" } plugin{ purpose = "plugin" } } task printProperties << { println springVersion println emailNotification sourceSets.matching{ it.purpose=="production"}.each{ println it.name } } ~~~ 执行该任务会打印上面定义的属性 ~~~ qianhuis-Mac-mini:0110 qianhui$ gradle -q printProperties 3.1.0.RELEASE build@master.org main ~~~
';