Gradle用戶指南

  1. 下載安裝gradle 2.1
    1. 安裝先決條件:gradle安裝須要1.6或者更高版本的jdk(jre)(可使用java –version 驗證),gradle自帶groove lib庫,因此沒必要安裝groove,任何已安裝groove都將被忽略。Gradle使用path路徑下的jdk,固然,你也能夠設置JAVA_HOME指向你的jdk安裝路徑。
    2. Gradle發行版是一個zip壓縮文件,完整的發行版包括:
      1. 二進制文件
      2. 用戶指南(htmlpdf
      3. Dsl參考指南
      4. API文檔(Javadoc和Groovydoc)。
      5. 大量示例,包括用戶指南中引用的例子,一些完善的和更復雜的構建,你能夠用來搭建本身的構建。
    3. 建立新的環境變量GRADLE_HOME,值爲gradle的安裝目錄,另需 /bin添加到path變量中。
    4. 你能夠運行gradle –v來驗證安裝,輸出顯示gradle版本和本地環境變量配置(groove版本,jvm版本等等)。
    5. 你能夠經過設置jvm環境變量來運行gradle。固然,你也可使用GRADLE_OPTS JAVA_OPTS ,或二者兼而有之。JAVA_OPTS環境變量按照慣例是許多java應用程序共享的。一個典型用例是設置HTTP代理JAVA_OPTSGRADLE_OPTS內存選項。這些變量也能夠設置gradlegradlew腳本的開始選項。

    注:這些不能用來設置命令行jvm選項。 html

  2. 構建腳本基礎
    1. Gradle中的一切都簡歷在2個基礎之上:項目projects和任務task

      每一個gradle構建都由一個或多個項目組成。一個項目表明什麼取決於你經過gradle怎麼作。例如:一個項目可能表明一個jar lib庫或者一個web應用程序;它也可能表明一個從其餘項目jars提取出的zip分佈;一個項目並必定表明一個構建;它可能表明一件事情要作;好比,部署你的應用程序到工做臺或者生產環境中;若是這看起來有點模糊,不要擔憂,Gradle build-by-convention支持爲一個項目添加更具體的定義。 java

      每一個項目都有一個或多個tasks任務組成。一個任務表明一個一些構建工做的原子塊。這多是編譯一些類,建立一個JAR,生成javadoc, 或發佈存檔到倉庫。 web

      如今,咱們將看看定義一些簡單的任務在一個構建一個項目。 後面的章節將看 處理多個項目和更多關於工做項目和任務。 shell

    2. Hello World

      使用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構建腳本作更多的操做,  使用AntGradle

      稍後,你將看到,這些方法能夠共享過項目中子項目的構建。若是你的構建邏輯很是複雜,gradle爲你提供其餘很方便的方式來組織他。 Chapter 17, Using Ant from Gradle

    Gradle容許定義一個或多個默認的構建任務。

    

這至關於運行clean,run。在多項目中構建的每個子項目均可以有特定的默認任務,若是一個子項目沒有指定默認任務,則使用父項目的默認任務(若是存在的話)。

配置DAG

咱們將在56章創建生命週期中詳細描述,它有配置階段和執行階段。配置階段後,gradle應該知道全部被執行的任務。Gradle提供一個鉤子使用這些信息。一個用例將檢查要發佈的任務在執行任務中間。基於此,你能夠給變量賦予不一樣的值。

在下面的例子中,執行分配和發佈任務的結果變量是不一樣的值。

重要的是,whenReady影響任務的發佈在發佈任務命令執行前。這些工做使得發佈任務不是首要任務(任務傳遞給gradle命令)。

在這一章,咱們只是先看一下任務,這並非對任務介紹的結束,若是你想進入更多的細節,第15章, 更多的任務 。

相關文章
相關標籤/搜索