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基础面试题总结
    mysql面试题总结
    记7.9面试题
    深入理解Java虚拟机学习笔记(三)-----类文件结构/虚拟机类加载机制
    jvm类加载子系统
    多线程与高并发基础三
    多线程与高并发基础二
    多线程与高并发基础一
    多线程与高并发笔记一
    Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
  • 原文地址:https://www.cnblogs.com/javalinux/p/14248186.html
Copyright © 2011-2022 走看看