今日名言
迷茫就是才华配不上梦想
工程和任务
在 Gradle 的世界中最重要的两个概念就是:工程( Project )和任务( Task )。
每一个 Gradle 的项目都会包含一个或多个工程,而每一个工程的职责又取决于我们对这个工程的定义,比如:一个工程可能是公共的 JAR 库,或者是一个 WEB 的应用程序,也可能是一个用于发布部署的 ZIP 包,而这个 ZIP 包又是通过其它工程编译打包的 JAR 文件组装成的。
每一个工程又由一个或多个任务组成,一个任务代表了一个工作的最小单元,它可以是一次类的编译、打一个 JAR 包、生成一份 Javadoc 或者是向仓库中提交一次版本发布。
任务的简单使用
当我们使用 Gradle 的命令时,比如gradle build
,Gradle 命令会去寻找当前目录下的 build.gradle 的文件,这个文件是 Gradle 的脚本文件,它里面定义了工程和工程拥有的所有任务等信息。
下面是一个简单的任务
task hello {
doLast {
println("hello world!")
}
}
在以上代码中,我们定义了一个 hello 的任务,然后为它添加了一个动作( action ),当执行gradle hello
命令时,该命令会调用 hello 任务,然后执行它的动作,打印输出了“ Hello world!”,这个动作是一个 groovy 的闭包函数。
任务的依赖关系
我们可以定义一个任务依赖于某个其它的任务,比如一个发布( release )任务必须依赖编译( build )任务,代码如下:
task build {
doLast {
println "i'm build task"
}
}
task release(dependsOn: build) {
doLast {
println "I'm release task"
}
}
输出结果是先执行build里的打印,然后再执行release里的打印
对现有任务添加依赖关系
task build {
doLast {
println "i'm build task"
}
}
task release() {
doLast {
println "I'm release task"
}
}
// 添任务依赖关系
release.dependsOn build
对现有的任务添加动作行为
task hello {
doLast {
println 'Hello World!'
}
}
// 法方一,在doFirst动作中添加
hello.doFirst {
println 'Hello doFirst'
}
// 法方二 在doLast动作中添加
hello.doLast {
println 'Hello doLast1'
}
// 法方三 在doLast动作中添加
hello {
doLast {
println 'Hello doLast2'
}
}
执行结果为
Hello doFirst
Hello World!
Hello doLast1
Hello doLast2
访问现有任务的属性值
task hello {
doLast {
println "Hello world! from the $hello.name task."
}
}
在任务中调用 groovy 方法
task hello {
doLast {
int a = 1,b = 2;
int result = add(a,b);
println "a add b is = " + result;
}
}
int add(int a,int b) {
a + b;
}