springboot-000 搭建gradle多模块项目

 之前学过springboot,但是因为公司没有这方面的需求,所以一直没有用到开发中,正好趁着最近有点时间打算重新做下梳理,做着笔记,加固印象。

这是springboot第一章节,搭建gradle多模块项目。

gradle是一种构建工具,帮我们构建App。构建包括编译、打包等过程。在gradle中,每个待编译的工程就是一个project,构建一个project需要 执行一系列task,如果想让gradle正确执行task需要我们引入对应的插件。gradle和maven相比,配置更加灵活简单,相对于maven的xml配置(虽然 通俗易懂,但是很难在xml中描述if、else等这样有不同条件的任务),gradle采用灵活简洁的groovy脚本语言,大大简化了构建代码的行数,而且groovy是基于java并拓展了java,java程序员可以无缝切换groovy开发程序,groovy就是把写java变的像写脚本一样简单,写完就可以执行,groovy内部会将其编译成java字节码,然后启动虚拟机(jvm)来执行。

接下来就是使用idea搭建gradle多模块项目了,打开idea,选择file,创建项目

 

点击next,选择项目所在的目录groupId, 创建项目名称ArtifactId,点解next,点击finish。

成功后,项目的目录如下

 

 

 然后就是搭建其他模块,点击项目名称,右键new model,下面页面基本没什么需要修改的,点击next,输入ArtifactId,点击next,点击finish,即可

最后,目录结构如下 :

 

gradle.properties的配置信息:

org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

 主项目的build.gradle的配置信息如下:

// 指定要应用的插件和版本
plugins {
    id 'java'
    id "org.springframework.boot" version "2.1.2.RELEASE"
    id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

// 指定下载的仓库地址
allprojects {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        jcenter()
        mavenCentral()
    }
}

group 'com.pf.springboot'

// 指定依赖版本
ext.spring_cloud_version = "Greenwich.RELEASE"
ext['lombok.version'] = "1.18.4"

// 应用于所有依赖的子项目
subprojects {
    version '1.0-SNAPSHOT'
    // 应用插件
    apply plugin: "java"
    apply plugin: "org.springframework.boot"
    apply plugin: "io.spring.dependency-management"

    // 设置编译和运行的jre兼容版本
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

    // 字符编码处理
    def defaultEncoding = 'UTF-8'
    tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding }

    // 生成Java文档的任务
    javadoc {
        options.encoding = defaultEncoding
        options.addBooleanOption('Xdoclint:none', true)
    }

    // Java编译任务依赖处理资源的任务
    compileJava.dependsOn(processResources)

    // 指定要运行测试的包
    test {
        include "**/repository/**", "**/service/**", "**/controller/**"
    }

    // spring boot构建任务
    springBoot {
        buildInfo()
    }

    dependencyManagement {
        // 导入maven依赖管理的bom
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${spring_cloud_version}"
            mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        }
    }

    /*
    * 为所有模块指定公共的依赖
    * 注意这里有些默认不用再指定版本了,已经由上面的dependencyManagement管理了
    * */
    dependencies {
        annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
        annotationProcessor "org.projectlombok:lombok"
        compileOnly "org.springframework.boot:spring-boot-configuration-processor"
        compileOnly "org.projectlombok:lombok"
        implementation "org.apache.commons:commons-lang3"
        implementation "org.apache.commons:commons-collections4:4.3"
        implementation "org.springframework.boot:spring-boot-starter-web"
//        implementation "org.springframework.boot:spring-boot-starter-jdbc"
        implementation fileTree(dir: 'libs', includes: ['*.jar'])
        testAnnotationProcessor "org.projectlombok:lombok"
        testCompileOnly "org.projectlombok:lombok"
        testImplementation "org.springframework.boot:spring-boot-starter-test"
    }
}

至此基本架构已搭建完成。接下来就要添加各模块之间的依赖了。首先我们梳理下依赖关系,service->respository;web->service;最后我们是把web打成war包,那么respository和service需要做为jar包被引用,所以,respository的build.gradle如下:

 

service的build.gradle如下:

 

 最后就是web的了:

posted @ 2019-12-15 20:42  lygsg  阅读(2890)  评论(0编辑  收藏  举报