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
~~~