Gradle(四)多項目構建

Gradle 執行多項目構建

通常的小項目只有一個 build.gradle 文件和一個sourse tree,可是當項目規模大了以後,單模塊漸漸不能知足工程師的需求。若是一個大項目被分割成更小的、相互依賴的多個子模塊,那麼一般會架構更清晰,更易讀,這個過程實際上就是通俗意義上的「模塊化」。「相互依賴」這個詞很重要,這也是爲何咱們一般想要經過單個構建將各個子模塊連接在一塊兒的緣由。java

Gradle 經過 多項目構建 來支持上述這種場景,須要注意的是 多項目構建 實際上仍是一個 Gradle 項目支持(single software component )web

與之對應的還有另外一種方法,那就是將一個大規模的軟件項目分爲多個組件,每個組件都由單一的 Gradle 構建來表示,本章主要介紹的是 Gradle 的多項目構建markdown

建立 Gradle 多項目構建(multi-project build)

一個多項目的Gradle 構建由一個根項目(root proejct)和若干個 子項目(sub-proejct)構成。架構

最基本的多項目構建只包含一個根項目和一個子項目。下面是一個多項目構建的結構,其中包含一個名爲app的子項目:app

//Project layout
.
├── app
│   ...
│   └── build.gradle
└── settings.gradle
複製代碼

上面的結構就是官方推薦的Gradle 項目結構。
build init plugin 插件會生成遵循這個結構框架的項目框架

note: root project 沒有 build.gradle 文件,只有 setttings.gradle 文件,這個文件用於配置哪些子項目參與構建模塊化

// settings.gradle.kts
rootProject.name = "basic-multiproject"
include("app")
複製代碼

在上面這個例子中,在構建時,gradle 就會在 app 目錄去尋找 build.gradle 文件來執行。函數

咱們能夠經過運行gradle projects命令來查看多項目構建的結構。gradle

> gradle -q projects

------------------------------------------------------------
Root project 'basic-multiproject'
------------------------------------------------------------

Root project 'basic-multiproject'
\--- Project ':app'

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :app:tasks
複製代碼

假設 app 子項目是一個Java應用程序,經過 application 插件和配置主類:ui

// app/build.gradle.kts
plugins {
    id("application")
}

application {
    mainClass.set("com.example.Hello")
}
複製代碼
// app/src/main/java/com/example/Hello.java
package com.example;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
複製代碼

咱們能夠運行這個主函數:

> gradle -q run
Hello, world!
複製代碼

添加子項目

如今咱們想向項目添加一個名爲 ‘lib’ 的子項目,咱們須要在 setting.gradle 文件中添加一行 include

// settings.gradle.kts
rootProject.name = "basic-multiproject"
include("app")
include("lib")
複製代碼

gradle 在構建時就會在 lib 文件夾內去尋找 build 文件去執行

// Project layout
.
├── app
│   ...
│   └── build.gradle.kts
├── lib
│   ...
│   └── build.gradle.kts
└── settings.gradle.kts
複製代碼
相關文章
相關標籤/搜索