注:這些不能用來設置命令行jvm選項。 html
每一個gradle構建都由一個或多個項目組成。一個項目表明什麼取決於你經過gradle怎麼作。例如:一個項目可能表明一個jar lib庫或者一個web應用程序;它也可能表明一個從其餘項目jars提取出的zip分佈;一個項目並必定表明一個構建;它可能表明一件事情要作;好比,部署你的應用程序到工做臺或者生產環境中;若是這看起來有點模糊,不要擔憂,Gradle build-by-convention支持爲一個項目添加更具體的定義。 java
每一個項目都有一個或多個tasks任務組成。一個任務表明一個一些構建工做的原子塊。這多是編譯一些類,建立一個JAR,生成javadoc, 或發佈存檔到倉庫。 web
如今,咱們將看看定義一些簡單的任務在一個構建一個項目。 後面的章節將看 處理多個項目和更多關於工做項目和任務。 shell
使用gradle命令運行gradle構建。這個命令會在當前目錄查找build.gradle文件,咱們一般把這個文件叫作構建腳本。雖然嚴格來講它是一個構建配置腳本,正如咱們稍後所看到的那樣,這個腳本定義一個項目及其文檔。 api
讓咱們來嘗試建立一個構建腳本:build.gradle 閉包
在一個命令行shell,移動到build.gradle所在目錄並執行構建腳本:gradle -q hello jvm
一個構建腳本的執行: ide
有一個速記方法來定義一個任務,例如上面的hello,這個速記方法看起來更簡潔: 學習
上面定義一個名叫 hello的任務閉包執行腳本。咱們將在整個用戶指南中使用這種任務定義風格。 gradle
Gradle構建腳本給了你groovy的所有威力。做爲開胃菜,先看看這個:
或者
以下
如你所想,你能夠聲明依賴於其餘任務的任務
插入:命令行建立文件 echo.>build.gradle
問題:怎麼在命令行輸出中文
添加一個依賴項,這個依賴不是必須存在的(不是必須定義在依賴前*)
任務taskx對tasky的依賴聲明在tasky的定義以前,這對多項目構建很是重要。任務依賴關係在15.4添加任務依賴項中會有更詳細的探討。
注意:你不能使用快捷鍵符號指向未定義的任務。
Groovy不但能定義一個任務作什麼,例如,它還能動態建立任務。
一旦任務建立,他們就能夠經過api進行訪問。例如,用這個特性你能夠在運行時爲一個任務動態的添加依賴關係。Ant並不支持這一點。
或者,你也能夠添加行爲到現有任務中
注:task任務名不區分大小寫(執行的時候)。
DoLast和doFirst能夠屢次被調用執行,他們在任務動做列表的開始或結束添加一個動做,他們在動做action列表中順序執行。<<操做符是doLast的一個別名。
正如你所注意的,在例子中有一個很方便的符號來訪問已存在的任務。每個任務均可以看做是構建腳本的一個屬性。
這使代碼很是有可讀性,特別是使用插件提供的任務時,好比compile編譯任務。
你能夠添加本身的屬性到一個任務。例如:添加一個屬性名myProperty,集ext.myProperty的默認值,完成後,這個屬性就能夠像預約義任務同樣讀取和設置值。
注:這裏的ext應是gradle自帶的,去掉後找不到指定屬性。
額外的屬性並不侷限於任務,你能夠閱讀更多關於他們的部分:13.4.2"額外屬性" 。
Ant任務是gradle的一等公民。它依靠groovy對ant任務提供優秀的jicheng 。經過gradle使用比本來的build.xml更強大和方便。從下面的例子中,你能夠學習到如何執行ant任務和訪問ant屬性。
注:沒作過ant,略過
你能夠對ant構建腳本作更多的操做, 使用Ant從Gradle
稍後,你將看到,這些方法能夠共享過項目中子項目的構建。若是你的構建邏輯很是複雜,gradle爲你提供其餘很方便的方式來組織他。 Chapter 17, Using Ant from Gradle
Gradle容許定義一個或多個默認的構建任務。
這至關於運行clean,run。在多項目中構建的每個子項目均可以有特定的默認任務,若是一個子項目沒有指定默認任務,則使用父項目的默認任務(若是存在的話)。
配置DAG
咱們將在56章創建生命週期中詳細描述,它有配置階段和執行階段。配置階段後,gradle應該知道全部被執行的任務。Gradle提供一個鉤子使用這些信息。一個用例將檢查要發佈的任務在執行任務中間。基於此,你能夠給變量賦予不一樣的值。
在下面的例子中,執行分配和發佈任務的結果變量是不一樣的值。
重要的是,whenReady影響任務的發佈在發佈任務命令執行前。這些工做使得發佈任務不是首要任務(任務傳遞給gradle命令)。
在這一章,咱們只是先看一下任務,這並非對任務介紹的結束,若是你想進入更多的細節,第15章, 更多的任務 。