Gradle与project(三)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Gradle与project(三)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                目錄
- 1. Gradle的執(zhí)行流程
- 2. Gradle 和 idea 對于 project 的概念的區(qū)別
- 3. project 相關(guān) API
- 4. 屬性相關(guān)API
- 5. 文件API
1. Gradle的執(zhí)行流程
Initialzation初始化階段
 解析整個工程中所有project(讀取setting.gradle文件),構(gòu)建所有的project對應(yīng)的Project對象
Configuration配置階段
 解析所有的project對象中的task,構(gòu)建好所有task的拓?fù)鋱D
Execution執(zhí)行階段
 執(zhí)行具體的task及其依賴的task
2. Gradle 和 idea 對于 project 的概念的區(qū)別
對于idea來說,一個項目實際上就是project,一個Project可以包含很多個模塊,一個module繼續(xù)可以有多個module。
Project
- Module
- Module - Module
- Module
 
- Module
而對于Gradle而言,Idea中的無論是Project還是Module,都是project,故樹狀結(jié)構(gòu)如下:
project
- project
- project - project
- project
 
- project
3. project 相關(guān) API
| getAllprojects() | 獲取工程中所有的project(包括根project與子project) | 
| getSubProjects() | 獲取當(dāng)前project下,所有的子project(在不同的project下調(diào)用,結(jié)果會不一樣,可能返回null) | 
| getParent() | 獲取當(dāng)前project的父project(若在rooProject的build.gradle調(diào)用,則返回null) | 
| getRootProject() | 獲取項目的根project(一定不會為null) | 
| project(String path, Closure configureClosure) | 根據(jù)path找到project,通過閉包進行配置(閉包的參數(shù)是path對應(yīng)的Project對象) | 
| allprojects(Closure configureClosure) | 配置當(dāng)前project和其子project的所有project | 
| subprojects(Closure configureClosure) | 配置子project的所有project(不包含當(dāng)前project) | 
例子:
project('app') { Project project -> // 一個參數(shù)時,可以省略不寫,這里只是為了明確參數(shù)的類型apply plugin : 'com.android.application'group 'com.lqr'version '1.0.0-release'dependencies {}android {} }// 2、allprojects(Closure configureClosure) allprojects {group 'com.lqr'version '1.0.0-release' }// 3、subprojects(Closure configureClosure) subprojects { Project project -> if(project.plugins.hasPlugin('com.android.library')){apply from: '../publishToMaven.gradle'} } // rootProject : build.gradle // 定義擴展屬性 ext {compileSdkVersion = 25libAndroidDesign = 'com.android.support:design:25.0.0' }// app : build.gradle android {compileSdkVersion = this.compileSdkVersion // 父project中的屬性,子project可以直接訪問使用... } dependencies {compile this.libAndroidDesign // 也可以使用:this.rootproject.libAndroidDesign... }4.屬性相關(guān)API
父project中通過ext塊定義的屬性,子project可以直接訪問使用
// rootProject : build.gradle // 定義擴展屬性 ext {compileSdkVersion = 25libAndroidDesign = 'com.android.support:design:25.0.0' }// app : build.gradle android {compileSdkVersion = this.compileSdkVersion // 父project中的屬性,子project可以直接訪問使用... } dependencies {compile this.libAndroidDesign // 也可以使用:this.rootproject.libAndroidDesign... }hasProperty(‘xxx’):判斷是否有在gradle.properties文件定義xxx屬性。
 在gradle.properties中定義的屬性,可以直接訪問,但得到的類型為Object,一般需要通過toXXX()方法轉(zhuǎn)型。
5. 文件API
| getRootDir() | 獲取rootProject目錄 | 
| getBuildDir() | 獲取當(dāng)前project的build目錄(每個project都有自己的build目錄) | 
| getProjectDir() | 獲取當(dāng)前project目錄 | 
| File file(Object path) | 定位一個文件,相對于當(dāng)前project開始查找 | 
| ConfigurableFileCollection files(Object… paths) | 定位多個文件,與file類似 | 
| copy(Closure closure) | 拷貝文件 | 
| fileTree(Object baseDir, Closure configureClosure) | 定位一個文件樹(目錄+文件),可對文件樹進行遍歷 | 
總結(jié)
以上是生活随笔為你收集整理的Gradle与project(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 开始使用gradle(二)
- 下一篇: groovy学习(一)
