鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 多項(xiàng)目打包
依賴管理實(shí)戰(zhàn)
配置遠(yuǎn)程倉庫
安裝Gradle
簡介
項(xiàng)目自動(dòng)化簡介
配置子項(xiàng)目
Gradle強(qiáng)大的特性
自動(dòng)化測試
簡介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項(xiàng)目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開發(fā)Web項(xiàng)目
聲明依賴
構(gòu)建塊
簡介
測試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項(xiàng)目文件
單元測試
多項(xiàng)目打包
Gradle 起步
介紹這個(gè)Gradle項(xiàng)目
簡介
自定義腳本
Gradle包裝器
簡要概述依賴管理
項(xiàng)目模塊化

多項(xiàng)目打包

上一節(jié)你給你的項(xiàng)目定義了一個(gè)層次化的目錄結(jié)構(gòu),整個(gè)項(xiàng)目包含一個(gè)根目錄和每個(gè)模塊一個(gè)子目錄,這一節(jié)你將學(xué)習(xí)怎么用Gradle來構(gòu)建這樣一個(gè)項(xiàng)目結(jié)構(gòu)。

首先在你的根目錄新建一個(gè)build.gradle文件,創(chuàng)建一個(gè)空的build腳本然后運(yùn)行g(shù)radle projects:

    $ gradle projects
    :projects
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'todo'
    No sub-projects

接下來學(xué)習(xí)怎么通過settings.gradle來定義項(xiàng)目的子項(xiàng)目。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag38.png" alt="" />

介紹設(shè)置文件

設(shè)置文件用來表示項(xiàng)目的層次結(jié)構(gòu),默認(rèn)的設(shè)置文件名稱是settings.gradle,對(duì)于你想添加的每一個(gè)子項(xiàng)目,調(diào)用include方法來添加。

    //參數(shù)是項(xiàng)目路徑,不是文件路徑
    include 'model'
    include 'repository', 'web'

提供的項(xiàng)目路徑是相對(duì)于根目錄,記住冒號(hào):是用來分隔目錄層次,比如你想表示model/todo/items這個(gè)目錄,在gradle里面是model:todo:items這樣表示。接下來執(zhí)行g(shù)radle projects任務(wù):

    $ gradle projects
    :projects
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'todo'
    +--- Project ':model'
    +--- Project ':repository'
    +--- Project ':web'

通過添加當(dāng)個(gè)設(shè)置文件,你就創(chuàng)建了一個(gè)多項(xiàng)目的構(gòu)建包含一個(gè)根項(xiàng)目和三個(gè)子項(xiàng)目,不需要額外的配置。

理解settings 的API表示

在Gradle開始執(zhí)行構(gòu)建之前,它創(chuàng)建一個(gè)Settings類型的實(shí)例,Settings接口直接用來表示settings文件,主要目的是通過代碼來動(dòng)態(tài)添加項(xiàng)目參與到多項(xiàng)目構(gòu)建中,下圖是你可以訪問的Gradle API。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag39.png" alt="" />

之前我們介紹過Gradle有三個(gè)生命周期,實(shí)例化階段->配置階段->執(zhí)行階段,Settings處于實(shí)例化階段,Gradle自動(dòng)找出一個(gè)子項(xiàng)目是否處在一個(gè)多項(xiàng)目構(gòu)建中。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag40.png" alt="" />

設(shè)置文件解析

Gradle允許你從根目錄或者任何子目錄中運(yùn)行構(gòu)建任務(wù),只要它包含一個(gè)build腳本,Gradle怎么知道一個(gè)子項(xiàng)目是不是一個(gè)多項(xiàng)目構(gòu)建的一部分呢?他需要查找settings文件,Gradle通過兩步來查找設(shè)置文件。

  1. Gradle查找和當(dāng)前目錄具有相同嵌套級(jí)別的master目錄下的設(shè)置文件
  2. 如果第一步?jīng)]有找到設(shè)置文件,Gradle從當(dāng)前目錄開始逐步查找父目錄

如果找到了settings文件,項(xiàng)目包含在另一個(gè)項(xiàng)目中,這個(gè)項(xiàng)目就當(dāng)成是多項(xiàng)目構(gòu)建的一部分。整個(gè)過程如下所示:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag41.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag42.png" alt="" />