1. 程式人生 > >利用Gradle構建Java多模組專案

利用Gradle構建Java多模組專案

    Java新手,準備寫個專案來鞏固下知識點,在新建專案時不知道選擇用什麼作為構建工具,Maven肯定用過,只限於使用過,沒有系統的去學習。之前做Android開發時用過Gradle來構建專案,也沒深入研究過。後來在公司接觸過用Gradle構建的java專案,才去深入瞭解過,描述的是Gradle是作為下一代構建工具,很靈活。我個人覺得這個靈活是體現在配置上,我看了很多使用Gradle構建多模組的專案的部落格,配置都不相同。反正Gradle優點很多,想了解的自行百度,有很多Gradle方面的教程。

    寫這篇部落格主要是為了記憶一下,加深印象,也為各位提供一種思路,有什麼不對的地方勿噴,我害怕!

1、專案結構

簡單說明一下專案結構,其中project-parent是根專案,project-core和project-app是子模組,project-app依賴project-core模組,其中IDEA我用的是ULTIMATE 2018.1版本,gradle使用的是gradle-4.4版本。


2、新建根專案project-parent

通過IDEA來新建專案,左邊選單欄選擇Gradle工具,右邊的Additional Libraries and Frameworks什麼都不勾選,因為根專案我們只需要setting.gradle和build.gradle兩個檔案就行了。然後一直下一步,我就不在提供操作截圖了,如果還不知道怎麼新建一個Gradle專案,請百度一下,教程很多。


專案新建完成,其中能看到setting.gradle和build.gradle兩個檔案。


3、新建子專案project-core

選擇根專案,然後右鍵,彈出操作選單,然後執行new->Module操作,會彈出和新建根專案一樣的操作彈窗。


然後按照新建專案,直接下一步,直到finish。我將貼出每一步的截圖



然後點選Finish完成後,得到如下專案結構:


4、新建子專案project-app

    新建流程和第三步操作一樣,我不再貼出具體截圖了,只貼出新建後的專案結構圖:


5、修改根目錄build.gradle配置:

setting.gradle就不說了,可以說是一個包含專案所有module的一個指令碼配置,具體可以自行查閱。

主要說下build.gradle的配置,分三部分,分別是buildscript,allprojects,subprojects

buildscript {

    ext {
        springBootVersion = '2.0.0.RELEASE'
    }

    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

allprojects {
    group 'com.gradle.project'
    version '1.0-SNAPSHOT'
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: "io.spring.dependency-management"

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    dependencies{
        //這裡如果配置了jar包依賴,所有子專案共享,使用了gradle的依賴傳遞特性。
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
}

6、project-core的build.gradle配置:

      這裡gradle.project什麼都沒有寫,根專案的build.gradle指令碼已經為所有模組提供了基本的配置,每個模組的build.gradle指令碼可以根據不同業務提供不同的配置。

dependencies {
}

7、project-app模組build.gradle配置:

    app模組使用SpringBoot框架快速釋出一個測試用的應用,並且依賴於project-core模組,具體配置如下:

apply plugin: 'org.springframework.boot'

dependencies {
    compile project(':project-core')
    compile('org.springframework.boot:spring-boot-starter')
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-starter-web')
}

8、project-core模組釋出類:

    在此模組下新建一個類,供app模組呼叫:


9、釋出project-app模組:

 通過SpringBoot配置,寫一個測試介面,使用project-core模組的程式碼提供響應訊息,然後將此模組釋出為一個應用,供外部訪問:


然後啟動這個應用,可以根據控制檯日誌檢視啟動狀態,這裡啟動成功,併成功釋出了request介面:


預設埠是8080,我們現在可以通過瀏覽器去訪問一下request測試介面,成功返回資料:


10、總結

    在學習gradle過程中,發現需要花部分精力在上面,需要熟悉Groovy的基礎語法,然後才能去深入研究gradle工具的使用,使用過程中能夠感覺到gradle的強大,我現在只是看到了它的冰山一角,真正強大的特性還有很多,有時間可以閱讀《gradle實戰》這本書,我還沒開始看,從目錄結構看,感覺很不錯,實際開發中肯定能用的上。