模块化项目构建
规划好自己项目的模块
- 根据高内聚低耦合的设计思想,设计符合自己项目的模块
- 一般会有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")
    }
}
 菡萏如佳人
菡萏如佳人