Gradle之多專案構建
Gradle對構建模組化專案提供了強大的支援,在Gradle中每一個模組都是一個專案,稱之為Gradle多專案構建技術,多專案構建實現了專案模組化,降低程式碼耦合度,增加內聚性,本篇文章將簡單介紹如何使用Gradle進行多專案構建。
1、組裝多專案構建:Gradle整個專案是由一個根目錄和多個模組的子目錄構成,在根目錄下新建build.gradle構建指令碼,使用gradle projects
命令檢視所有參與構建的專案:
> Task :projects
//只有一個根專案,無子專案
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'root'
No sub-projects
示例中使用的多專案層次結構如下圖,定義了3個子專案:
①settings檔案介紹:使用過Gradle構建專案的都應該知道這個檔案,該檔案宣告瞭專案層次結構所需的配置。預設情況下,這個檔案被命名為settings.gradle
,並且和根專案的build.gradle
檔案放在一起。簡單配置settings.gradle
檔案:
//settings.gradle指令碼:
include 'model'
include 'repository', 'web'
//再次執行gradle projects命令,可以看出多了3個子專案:
> Task :projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'root'
+--- Project ':model'
+--- Project ':repository'
\--- Project ':web'
②settings API的理解:Gradle在組裝構建之前,會建立一個Settings
例項,Settings
介面是settings檔案的直接表示,它的主要作用就是新增Project
例項參與多專案構建,下圖顯示了Settings
介面的相關方法:
我們可以在settings.gradle檔案中直接使用這些相關的API進行編碼,例如呼叫了include(String)
方法將子專案新增到多專案的構建中。
③settings執行的階段:在介紹task的使用時說到了構建過程的三個生命週期:初始化、配置和執行。那麼是在哪個階段解析執行settings檔案中的程式碼的呢?可以想到的是,它肯定是在Project例項配置之前進行例項化的:
④如何找到settings檔案:只要根專案或者任何子專案的目錄中包含構建檔案,Gradle就執行你從相應的位置執行構建。 Gradle是如何知道一個子專案是一個多專案構建的一部分的呢?它需要找到settings檔案,這個檔案指示了子專案是否包含在多專案構建中。步驟:①首先Gradle在與當前目錄同層次的master目錄下搜尋settings檔案,②找不到則在父目錄下查詢settings檔案,下圖分別對應這兩種情況:
⑤專案的兩種佈局:分層佈局和平面佈局,android專案中使用的就是分層佈局。對於平面佈局來說,要想包括與根專案同一巢狀層次的專案,需要使用includeFlat
方法,下圖分別對應的是分層佈局和平面佈局:
2、子專案的構建檔案:每個子專案的構建需要在子專案的目錄下新建一個build.gradle構建指令碼,該目錄樹如下圖:
①根專案構建指令碼:
/**為所有專案(包括根專案和所有子專案)設定group和version屬性*/
allprojects {
group = 'com.manning.gia'
version = '0.1'
}
/**所有子專案應用Java外掛*/
subprojects {
apply plugin: 'java'
}
②子專案構建指令碼:一般在子專案構建指令碼中不宣告任何程式碼也是可以的,除非有一些其它的需求,例如web子專案的構建指令碼如下:
/**應用war外掛*/
apply plugin: 'war'
/**宣告中心倉庫*/
repositories {
mavenCentral()
}
dependencies {
/**定義依賴了repository子專案*/
compile project(':repository')
}
3、定義不同的構建指令碼名稱:標準的Gradle構建檔名是build.gradle,但是也許有必要使用一些更具有表達性的名稱來命名構建檔案。想使用自定義的構建指令碼檔名,關鍵在於settings檔案。假如專案結構如下圖:
include 'todo-model', 'todo-repository', 'todo-web'
/**更改構建檔案,將build.gradle 更換成更有意義的命名,如 model.gradle
* it.name 是子專案名:todo-model todo-repository todo-web*/
rootProject.children.each {
/**設定構建指令碼檔名*/
it.buildFileName = it.name + '.gradle' - 'todo-'
}
以上簡單介紹多專案構建的原理,settings檔案如何實現基本的配置,如何是一個專案作為子專案新增到構建中等。還是那句話,知其所以然能夠讓你得心應手。
相關文章
- Gradle構建SpringBoot專案GradleSpring Boot
- 使用gradle構建springboot專案GradleSpring Boot
- 【Java】【Gradle】Gradle構建SpringBoot專案,Gradle模組化管理JavaGradleSpring Boot
- 在gradle中構建java專案GradleJava
- Gradle快速構建Spring Boot專案GradleSpring Boot
- springboot gradle demo (使用 Gradle 構建的 Spring Boot專案)Spring BootGradle
- Gradle入門及SpringBoot專案構建GradleSpring Boot
- IDEA使用Gradle構建SpringBoot專案工程IdeaGradleSpring Boot
- Gradle學習系列—-多專案構建Gradle
- Gradle學習系列----多專案構建Gradle
- Gradle自動化專案構建之Gradle學習及實戰Gradle
- Gradle自動化專案構建之快速掌握GroovyGradle
- Idea下構建基於Gradle的Spring Boot專案IdeaGradleSpring Boot
- 專案構建工具 GradleGradle
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- AndroidStudio配置settings.gradle在工程中構建多個專案AndroidGradle
- Gradle 與 AGP 構建 API: 配置您的構建檔案GradleAPI
- 用Idea 2019.3+和Gradle5.2.1+ 構建SpringBoot多專案(二)IdeaGradleSpring Boot
- 06、使用Gradle構建的專案如何打jar包和war包GradleJAR
- gradle構建springboot專案瘦身,外部依賴jar的終極方法GradleSpring BootJAR
- 利用IDEA建立gradle構建的Java多模組專案(太清晰了)IdeaGradleJava
- 【Java】【專案構建】Idea中設定Gradle/Maven多模組依賴JavaIdeaGradleMaven
- 第一次構建Flutter專案一直卡在Initializing gradle...FlutterGradle
- Spring Boot——初體驗開啟第一個Gradle構建的Web專案Spring BootGradleWeb
- gradle構建spring原始碼GradleSpring原始碼
- Gradle for Android ( 構建變體 )GradleAndroid
- gradle中的增量構建Gradle
- MongoDB – 使用模式構建之多型模式MongoDB模式多型
- CMAKE 《window構建專案》
- JAVA專案映象構建Java
- Maven 構建 Java 專案MavenJava
- webpack快速構建專案Web
- 如何構建「大型 Node.js 專案」的專案結構?Node.js
- maven 專案轉化成 gradle 專案實踐MavenGradle
- 使用IDEA建立gradle專案IdeaGradle
- idea gradle 專案依賴IdeaGradle
- 2. vite 構建專案Vite
- 使用Dockerfile構建django專案DockerDjango