• 使用Gradle构建springboot多模块项目,并混合groovy开发


    idea设置本地gradle

    打包:

    build.gradle

    
    
    //声明gradle脚本自身需要使用的资源,优先执行
    buildscript {
    ext {
    springBootVersion = '2.1.4.RELEASE'
    }
    repositories {
    // 本地maven仓库
    mavenLocal()
    maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' }
    //和maven中央仓库一样的另一个依赖管理仓库,主要是java
    jcenter()
    }
    dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
    }

    // allprojects 所有项目共享的配置
    allprojects {
    apply plugin: 'idea'
    apply plugin: 'java-library'
    version = '1.0'
    sourceCompatibility = 11
    targetCompatibility = 11
    }

    // subprojects : 所有子模块共享的配置
    subprojects {
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot' //使用springboot插件
    apply plugin: 'io.spring.dependency-management' //版本管理插件
    apply plugin: 'application' // 识别mainClassName 插件
    //如果是多模块项目,需要指定一个程序入口,必须指定,否则无法build,单模块可以不用指定
    mainClassName = 'cm.hou.blogweb.BlogWebApplication'
    // java编译的时候缺省状态下会因为中文字符而失败
    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
    // 配置所有子模块的依赖仓库地址
    repositories {
    // 本地maven仓库
    mavenLocal()
    maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' }
    //和maven中央仓库一样的另一个依赖管理仓库,主要是java
    jcenter()
    }
    //所有子模块共有依赖
    dependencies{
    // gradle5.0版本以上引入需要这种形式
    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    implementation 'org.codehaus.groovy:groovy'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
    }
     

    settings.gradle

    // 父项目名称
    rootProject.name = 'blog-system'
    // 导入子模块
    include 'blog-web','blog-service','blog-pojo','blog-dao','blog-admin'

    使用api解决多重依赖

    dao 模块依赖

    dependencies {
        // 使用api 暴露依赖,对其他模块可见,不用重复引用
        api (project(':blog-pojo'))
        api 'mysql:mysql-connector-java:8.0.15'
        api 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1'
        api 'com.zaxxer:HikariCP'  // 连接池
        api 'com.github.pagehelper:pagehelper:5.1.10'
        implementation 'org.springframework.boot:spring-boot-starter'
    }

    使用api之后,service模块依赖dao模块是, api的依赖是可见的,就不用重复依赖了:

    service

    dependencies {
        api (project(':blog-dao'))
        implementation 'org.springframework.boot:spring-boot-starter'
    }

    web模块

    // 引入插件新写法
    plugins {
        id 'war'
        id 'groovy'
    }
    //旧写法
    //apply plugin : "war"
    archivesBaseName = 'blog-web'
    /**
     * SourceSets: 指定资源路径
     */
    sourceSets.main.java.srcDirs = []
    // 指定groovy编译路径,不指定groovy类不会编译
    sourceSets.main.groovy.srcDirs += ["src/main/java"]
    /**
     * api 用于取代compile(已被废弃)
     * api或compile关键字引用的包对于其他module来说是可见的,
     * implementation关键字引用的包对于其他module来说是不可见的。
     */
    dependencies{
        implementation (project(':blog-service'))
        implementation 'org.springframework.boot:spring-boot-starter-web'
        //  打包成war包
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }

    使用souceSets混合编译java和Groovy

    必须添加这个才会编译groovy类

    /**
     * SourceSets: 指定资源路径
     */
    sourceSets.main.java.srcDirs = []
    // 指定groovy编译路径,不指定groovy类不会编译
    sourceSets.main.groovy.srcDirs += ["src/main/java"]

    项目结构

    添加lombok

    dependencies {
        // guava 工具包
        api 'com.google.guava:guava:27.1-jre'
        // gradle5.0版本以上引入需要这种形式
        compileOnly 'org.projectlombok:lombok:1.18.8'
        annotationProcessor 'org.projectlombok:lombok:1.18.8'
        implementation 'org.springframework.boot:spring-boot-starter'
    }

     最后贴上我的Gradle项目: https://gitee.com/houzheng1216/blog_system

  • 相关阅读:
    Scala学习笔记——断言和单元测试
    Spark学习笔记——读写Hbase
    Spark学习笔记——读写HDFS
    Scala学习笔记——简化代码、柯里化、继承、特质
    Spark学习笔记——读写MySQL
    Hbase学习笔记——基本CRUD操作
    Spark学习笔记——在集群上运行Spark
    IDEA启动Tomcat服务器时某些端口(如1099端口)被占用的解决办法
    ResultMap和ResultType在使用中的区别、MyBatis中Mapper的返回值类型
    java中的stream的Map收集器操作
  • 原文地址:https://www.cnblogs.com/houzheng/p/11024865.html
Copyright © 2020-2023  润新知