Gradle實戰讀書筆記之四 多項目的構建

組裝多項目構建

在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 = 
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容