gradle脚本语言是一个领域专业语言,以groovy为基础。
调用project的api来获取和项目有关的信息
task check<<{ println name println project.name }
qianhuis-Mac-mini:0110 qianhui$ gradle -q check check 0110
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
当执行脚本的时候,会将脚本编译成一个class,该class是实现Script 接口的。说明你在脚本中所定义的方法和属性都存在于该script对象中。
你可以在你自己写的脚本中定义本地变量。
运用groovy基础语法,可以使用def定义一个本地变量。
def dest = "this is myself" task check<<{ println dest }
qianhuis-Mac-mini:0110 qianhui$ gradle -q check this is myself
ext块可以一次性添加多个属性
apply plugin: "java" ext { springVersion = "3.1.0.RELEASE" emailNotification = "[email protected]" } 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 [email protected] main