組裝多項目構建
在Android開發中,一般一個project下面,可由一個主程序,與多個 module組成;這就是多項目;
運行gradle projects
可查看參與構建的所有項目
settings.gradle 文件
位于根項目的目錄,根項目表示位于頂級目錄中的總體項目;settings.gradle內容如下:
include ':app', ':common', ':home'
如上settings文件,我們包含一個根項目和3個子項目的多模塊構建;
settings API 表示
在Gradle組裝構建之前,會創建一個Settings類型的實例;Settings接口是settings文件的直接表示;settings 在初始化階段執行;
定義特定的任務:
如,通過project 方法給子項目定義配重塊,實際配置內容在閉包中,如:
project(':common') {
group = "comom.better"
version = '1.0.0'
apply plugin: 'com.android.library'
dependencies { // 可以在這里指定依賴,但還是在模塊中的gradle文件指定好
}
}
為指定模塊執行任務
通過冒號(:) +模塊名來指定,如 執行 build 任務:
gradle :common:build
在項目執行 build任務的時候,gradle通過依賴,來確認每個一個module的執行屬性,如A模塊依賴B,則B會在A之前構建;
多項目部分構建
如果有好多個子項目的復雜多項目構建,將大大影響平均執行時間;gradle會遍歷所有的項目依賴并確保它們是最新的;
在開發階段,開發者知道哪些項目有了變動,構建時,不需要重新構建沒有發生變化的子項目;針對這個情況,gradle提供部分構建特性;
部分構建通過命令行選項-a
或 --no-rebuild
啟用;
假設只在項目 :common 改變了代碼,但不想重新構建子項目 :home,這就可以使用部分構建,省去檢查home項目的構建成本,降低構建時間;
定義公共行為
通過 allprojects和subprojects方法來定義公共行為;
使用 allprojects方法來設置根項目和子項目的 group和version屬性;
使用subprojects方法將插件應用于所有的子項目;
用來減少重復的代碼,利于清晰;
如下代碼:
allprojects {
repositories {
jcenter()
}
// 為根項目和所有子項目設置group和version屬性
group = 'com.better'
verison = '1.0.0'
}
subprojects { // 設置插件應用于子項目
// apply plugin :
}
獨立的項目文件
每個項目都有一個 build.gradle文件,在android 中,就是每個module有其對應的build.gradle文件;但是在集成開發環境中,每個module的gralde文件,都是相同的,在多個文件中編輯代碼,很容易混淆;
我們肯定是可以自定義其 build 文件名稱的,使用 Settings API;
在settings.gradle文件中
rootProject.children.each {
it.buildFileName =
}