今日名言
迷茫就是才華配不上夢想
工程和任務
在 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;
}