zoukankan      html  css  js  c++  java
  • 使用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'  //版本管理插件
        // 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{
            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

    转载于:https://www.cnblogs.com/houzheng/p/11024865.html

     
     
  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/javalinux/p/14248186.html
Copyright © 2011-2022 走看看