springboot用以進行web項目開發的便捷性,本文不再贅述,主要是想將工作中基于springboot與gradle的多模塊項目的構建經驗進行總結與歸納。
1.創建項目
首先安裝java和gradle,本文選用的java版本為1.8.0_40,gradle版本為2.10,安裝過程本文不再贅述。
其次創建項目,名稱為 springboot-mm:
1
2
3
|
mkdir springboot-mm cd springboot-mm gradle init |
此時的項目結構如下:
接下來,創建多個模塊,這里以web和modules為例,先創建相關的目錄,
linux:
1
2
|
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:
1
2
|
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 |
此時的目錄結構如下:
2.修改配置
首先修改根目錄下的 settings.gradle 文件,引入子模塊:
1
|
include 'web' , 'modules' |
其次修改根目錄下的 build.gradle:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// 所有子項目的通用配置 subprojects { apply plugin: 'java' apply plugin: 'idea' version = '1.0.0' // jvm 版本號要求 sourcecompatibility = 1.8 targetcompatibility = 1.8 // java編譯的時候缺省狀態下會因為中文字符而失敗 [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" ) } } // 顯示當前項目下所有用于 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" } } } |
接下來,使用intellij (使用版本為2016.3)導入項目,導入成功后,應該可見如下顯示:
添加 web/build.gradle 文件并修改,來定義 web模塊的依賴:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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的依賴模塊,通常可以將類似orm,支付,認證等功能分別放到不同的modules中,這樣可以降低程序的耦合性,便于業務的擴展。讀者可根據自身項目要求,對modules/build.gradle進行修改,但需要在modules/build.gradle,加入以下配置:
1
2
3
|
bootrepackage { enabled = false } |
具體原因,請參考,此處。
3.添加測試代碼
添加web\src\main\java\com\formularoom\application.java,示例代碼如下
1
2
3
4
5
6
7
8
9
10
11
12
|
@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,
1
2
3
4
5
6
7
8
9
|
@controller public class test1 { @requestmapping (value = "/test1" , method = requestmethod.get) @responsebody public string test1() { return "spring boot multiple modules test" ; } } |
使用瀏覽器訪問http://127.0.0.1:8081/test1 , 顯示如下:
完整的示例代碼,可從此處 獲取。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/formularoom/article/details/70354562