gradle系列——Task任務簡單使用

今日名言
迷茫就是才華配不上夢想

工程和任務

在 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章