springboot+gradle 構(gòu)建多模塊項(xiàng)目的步驟
springboot用以進(jìn)行web項(xiàng)目開發(fā)的便捷性,本文不再贅述,主要是想將工作中基于springboot與gradle的多模塊項(xiàng)目的構(gòu)建經(jīng)驗(yàn)進(jìn)行總結(jié)與歸納。
1.創(chuàng)建項(xiàng)目
首先安裝java和gradle,本文選用的java版本為1.8.0_40,gradle版本為2.10,安裝過(guò)程本文不再贅述。
其次創(chuàng)建項(xiàng)目,名稱為 springboot-mm:
mkdir springboot-mm cd springboot-mm gradle init

此時(shí)的項(xiàng)目結(jié)構(gòu)如下:

接下來(lái),創(chuàng)建多個(gè)模塊,這里以web和modules為例,先創(chuàng)建相關(guān)的目錄,
Linux:
mkdir -p web/src/main/{java,resources} web/src/test/{java,resource}
mkdir -p modules/src/main/{java,resources} modules/src/test/{java,resource}
Windows:
mkdir web\src\main\java,web\src\main\resource,web\src\test\java,web\src\test\resource mkdir modules\src\main\java,modules\src\main\resource,modules\src\test\java,modules\src\test\resource
此時(shí)的目錄結(jié)構(gòu)如下:

2.修改配置
首先修改根目錄下的 settings.gradle 文件,引入子模塊:
include 'web','modules'
其次修改根目錄下的 build.gradle:
// 所有子項(xiàng)目的通用配置
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
version = '1.0.0'
// JVM 版本號(hào)要求
sourceCompatibility = 1.8
targetCompatibility = 1.8
// java編譯的時(shí)候缺省狀態(tài)下會(huì)因?yàn)橹形淖址?
[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'
repositories {
mavenLocal()
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
mavenCentral()
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
maven { url 'http://maven.springframework.org/release' }
maven { url 'http://maven.springframework.org/milestone' }
}
jar {
manifest {
attributes("Implementation-Title": "Gradle")
}
}
// 顯示當(dāng)前項(xiàng)目下所有用于 compile 的 jar.
task listJars(description: 'Display all compile jars.') << {
configurations.compile.each { File file -> println file.name }
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
接下來(lái),使用intellij (使用版本為2016.3)導(dǎo)入項(xiàng)目,導(dǎo)入成功后,應(yīng)該可見如下顯示:

添加 web/build.gradle 文件并修改,來(lái)定義 web模塊的依賴:
buildscript {
repositories {
mavenLocal()
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.5.RELEASE")
}
}
apply plugin: 'org.springframework.boot'
archivesBaseName = 'web'
ext {
springBootVar = '1.4.5.RELEASE'
}
dependencies {
compile project(':modules')
// spring boot
compile "org.springframework.boot:spring-boot-starter-web:$springBootVar"
testCompile "org.springframework.boot:spring-boot-starter-test:$springBootVar"
}
添加 modules/build.gradle 文件,本例中modules是web的依賴模塊,通??梢詫㈩愃苚rm,支付,認(rèn)證等功能分別放到不同的modules中,這樣可以降低程序的耦合性,便于業(yè)務(wù)的擴(kuò)展。讀者可根據(jù)自身項(xiàng)目要求,對(duì)modules/build.gradle進(jìn)行修改,但需要在modules/build.gradle,加入以下配置:
bootRepackage {
enabled = false
}
具體原因,請(qǐng)參考,此處。
3.添加測(cè)試代碼
添加web\src\main\java\com\formularoom\Application.java,示例代碼如下
@ComponentScan( basePackages = {"com.formularoom"})
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {
public static void main(String args[]) {
SpringApplication.run(Application.class, args);
}
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setPort(8081);
}
}
添加web\src\main\java\com\formularoom\controller\test1.java,
@Controller
public class test1 {
@RequestMapping(value = "/test1", method = RequestMethod.GET)
@ResponseBody
public String test1() {
return "spring boot multiple modules test";
}
}
使用瀏覽器訪問(wèn)http://127.0.0.1:8081/test1 , 顯示如下:

完整的示例代碼,可從此處 獲取。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis中${}?和?#{}?有什么區(qū)別小結(jié)
${}?和?#{}?都是?MyBatis?中用來(lái)替換參數(shù)的,它們都可以將用戶傳遞過(guò)來(lái)的參數(shù),替換到?MyBatis?最終生成的?SQL?中,但它們區(qū)別卻是很大的,今天通過(guò)本文介紹下MyBatis中${}?和?#{}?有什么區(qū)別,感興趣的朋友跟隨小編一起看看吧2022-11-11
java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例
這篇文章主要介紹了java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例,有需要的朋友可以參考一下2013-12-12
SpringBoot返回long,前端接收進(jìn)度丟失,@JsonSerialize不生效問(wèn)題
這篇文章主要介紹了SpringBoot返回long,前端接收進(jìn)度丟失,@JsonSerialize不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot2之PUT請(qǐng)求接收不了參數(shù)的解決方案
這篇文章主要介紹了SpringBoot2之PUT請(qǐng)求接收不了參數(shù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
使用Spring boot + jQuery上傳文件(kotlin)功能實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下2017-07-07
Java實(shí)用工具之使用oshi獲取主機(jī)信息的方法
這篇文章主要介紹了Java實(shí)用工具之使用oshi獲取主機(jī)信息的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié)
這篇文章主要介紹了Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

