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

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 = "[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

你可能感兴趣的:(gradle)