模块化项目构建
规划好自己项目的模块
- 根据高内聚低耦合的设计思想,设计符合自己项目的模块
- 一般会有web层,控制层,服务层,数据层
- 每个层下面的路径可以自定义,只后在构建文件build.gradle中说明就行
建议采用默认的就行
大概的结构图如下:
每个模块下都有一个build.gradle文件,项目根目录下有一个 setting.gradle文件
理解setting文件
- 对项目根目录下的setting.gradle文件进行配置多模块项目
rootProject.name = 'ziniuxiaozhu'
include 'common'
include 'service'
include 'webapp'
- setting文件的执行是在初始化阶段
回顾下gradle的三个生命周期
-
初始化的时候先从本模块下的setting文件中寻找,再到根目录下去寻找
也可以通过命令行参数控制setting搜索行为
- 支持分层布局和扁平布局,当然个人推荐分层的,能够更细粒度控制组件的建模
配置build文件
- build文件中包含了项目的插件配置,版本控制,依赖管理等
一个根目录下build.gradle文件例子:
plugins{
id 'org.springframework.boot' version '1.5.9.RELEASE'
}
allprojects{
group = 'com.znxz'
version = '1.0'
apply plugin: 'org.springframework.boot'
}
subprojects{
apply plugin: 'java'
apply plugin: 'idea'
// JVM 版本号要求
sourceCompatibility = 1.8
targetCompatibility = 1.8
ext {
springBootVersion = '1.5.10.RELEASE'
springloadedVersion = '1.2.8.RELEASE'
}
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
testOutputDir = file("$buildDir/classes/test/")
}
}
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
repositories {
mavenLocal()
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven{ url 'http://www.ziniuxiaozhu.com:8081/nexus/content/groups/public' }
mavenCentral()
jcenter()
}
dependencies{
compile ("org.hibernate.validator:hibernate-validator:6.0.7.Final")
compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
}
}
- 子模块的build.gradle文件一般是指名该模块的名称以及依赖的其他模块或第三方jar包
例子如下:
project(':control'){
dependencies{
compile project(':service')
//WEB服务
compile("org.springframework.boot:spring-boot-starter-data-rest"){
exclude group : 'org.hibernate', module :'hibernate-validator'
exclude group : 'javax.validation', module :'validation-api'
}
//JWT
compile("io.jsonwebtoken:jjwt:0.9.0")
//SpringSecurity
compile("org.springframework.boot:spring-boot-starter-security")
}
}