Gradle父子项目构建
Gradle對(duì)構(gòu)建模塊化項(xiàng)目提供了強(qiáng)大的支持,在Gradle中每一個(gè)模塊都是一個(gè)項(xiàng)目,稱之為Gradle多項(xiàng)目構(gòu)建技術(shù),多項(xiàng)目構(gòu)建實(shí)現(xiàn)了項(xiàng)目模塊化,降低代碼耦合度,增加內(nèi)聚性,本篇文章將簡(jiǎn)單介紹如何使用Gradle進(jìn)行多項(xiàng)目構(gòu)建。
?
1、組裝多項(xiàng)目構(gòu)建:
Gradle整個(gè)項(xiàng)目是由一個(gè)根目錄和多個(gè)模塊的子目錄構(gòu)成,在根目錄下新建build.gradle構(gòu)建腳本,使用gradle projects命令查看所有參與構(gòu)建的項(xiàng)目:
> Task :projects //只有一個(gè)根項(xiàng)目,無子項(xiàng)目 ------------------------------------------------------------ Root project ------------------------------------------------------------ Root project 'root' No sub-projects
示例中使用的多項(xiàng)目層次結(jié)構(gòu)如下圖,定義了3個(gè)子項(xiàng)目:
①settings文件介紹:使用過Gradle構(gòu)建項(xiàng)目的都應(yīng)該知道這個(gè)文件,該文件聲明了項(xiàng)目層次結(jié)構(gòu)所需的配置。默認(rèn)情況下,這個(gè)文件被命名為settings.gradle,并且和根項(xiàng)目的build.gradle文件放在一起。簡(jiǎn)單配置settings.gradle文件:
②settings API的理解:Gradle在組裝構(gòu)建之前,會(huì)創(chuàng)建一個(gè)Settings實(shí)例,Settings接口是settings文件的直接表示,它的主要作用就是添加Project實(shí)例參與多項(xiàng)目構(gòu)建,下圖顯示了Settings接口的相關(guān)方法:
我們可以在settings.gradle文件中直接使用這些相關(guān)的API進(jìn)行編碼,例如調(diào)用了include(String)方法將子項(xiàng)目添加到多項(xiàng)目的構(gòu)建中。
③settings執(zhí)行的階段:在介紹task的使用時(shí)說到了構(gòu)建過程的三個(gè)生命周期:初始化、配置和執(zhí)行。那么是在哪個(gè)階段解析執(zhí)行settings文件中的代碼的呢?可以想到的是,它肯定是在Project實(shí)例配置之前進(jìn)行實(shí)例化的:
④如何找到settings文件:只要根項(xiàng)目或者任何子項(xiàng)目的目錄中包含構(gòu)建文件,Gradle就運(yùn)行你從相應(yīng)的位置運(yùn)行構(gòu)建。 Gradle是如何知道一個(gè)子項(xiàng)目是一個(gè)多項(xiàng)目構(gòu)建的一部分的呢?它需要找到settings文件,這個(gè)文件指示了子項(xiàng)目是否包含在多項(xiàng)目構(gòu)建中。步驟:①首先Gradle在與當(dāng)前目錄同層次的master目錄下搜索settings文件,②找不到則在父目錄下查找settings文件,下圖分別對(duì)應(yīng)這兩種情況:
⑤項(xiàng)目的兩種布局:分層布局和平面布局,android項(xiàng)目中使用的就是分層布局。對(duì)于平面布局來說,要想包括與根項(xiàng)目同一嵌套層次的項(xiàng)目,需要使用includeFlat方法,下圖分別對(duì)應(yīng)的是分層布局和平面布局:
?
2、子項(xiàng)目的構(gòu)建文件:
每個(gè)子項(xiàng)目的構(gòu)建需要在子項(xiàng)目的目錄下新建一個(gè)build.gradle構(gòu)建腳本,該目錄樹如下圖:
①根項(xiàng)目構(gòu)建腳本:
②子項(xiàng)目構(gòu)建腳本:一般在子項(xiàng)目構(gòu)建腳本中不聲明任何代碼也是可以的,除非有一些其它的需求,例如web子項(xiàng)目的構(gòu)建腳本如下:
3、定義不同的構(gòu)建腳本名稱:
標(biāo)準(zhǔn)的Gradle構(gòu)建文件名是build.gradle,但是也許有必要使用一些更具有表達(dá)性的名稱來命名構(gòu)建文件。想使用自定義的構(gòu)建腳本文件名,關(guān)鍵在于settings文件。假如項(xiàng)目結(jié)構(gòu)如下圖:
include 'todo-model', 'todo-repository', 'todo-web'/**更改構(gòu)建文件,將build.gradle 更換成更有意義的命名,如 model.gradle* it.name 是子項(xiàng)目名:todo-model todo-repository todo-web*/ rootProject.children.each {/**設(shè)置構(gòu)建腳本文件名*/it.buildFileName = it.name + '.gradle' - 'todo-' }
以上簡(jiǎn)單介紹多項(xiàng)目構(gòu)建的原理,settings文件如何實(shí)現(xiàn)基本的配置,如何是一個(gè)項(xiàng)目作為子項(xiàng)目添加到構(gòu)建中等。還是那句話,知其所以然能夠讓你得心應(yīng)手。
?
總結(jié)
以上是生活随笔為你收集整理的Gradle父子项目构建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UEditor国际化配置,支持中英文切换
- 下一篇: simulink 快捷键 运行_高效使用