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
                </div>
    
';