利用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測試介面,成功返回資料: