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