不为有趣之事,何遣有涯之生
不失其所者久,死而不亡者寿

Gradle简明教程(5) 多模块项目构建

模块化项目构建

规划好自己项目的模块
  • 根据高内聚低耦合的设计思想,设计符合自己项目的模块
  • 一般会有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")
    }
}
未经允许不得转载:菡萏如佳人 » Gradle简明教程(5)

欢迎加入极客江湖

进入江湖关于作者