• 【Gradle】四、使用Gradle创建SringBoot微服务项目


    一、 创建Springboot项目

    Spring Boot Gradle 插件在 Gradle 提供 Spring Boot 支持。它允许您打包可执行 jar 或 war 归档文件,运行 SpringBoot 应用程序,并使用 Spring-Boot-dependencies 提供的依赖管理。
    相关文档请参考:
    https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#running-your-application

    0、阿里云脚手架创建项目

    可以通过阿里云start快速生产java工程脚手架,方便快捷,具体步骤如下所示
    https://start.aliyun.com/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1、引入 t springboot

    该插件发布在 Gradle 的插件门户网站上,可以使用插件块来应用:

    plugins {
    id 'org.springframework.boot' version '2.3.7.RELEASE' //维护springboot版本号,不单独使用,和下面两个插件一起用
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    //进行依赖管理,在引入其它boot依赖时省略版本号、解决jar包冲突问题
    id 'java'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2 、引入依赖

    dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    //省略版本,原生bom支持,插件management提供
    implementation 'org.springframework.boot:spring-boot-starter-web' 
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    }
    test {
    useJUnitPlatform()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、执行 geradle bootRun 指令

    要想运行当前 Springboot 项目,直接执行 gradle bootRun 指令或者 idea 右侧按钮即可。
    当然如果想让当前项目打成可执行 jar 包,只需执行: gradle bootJar 指令即可。
    Cloud 项目创建也可以借助于脚手架创建,与 Boot 项目类似。

    4、spring-boot-gradle-plugin 插件‘

    buildscript {
    repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    }
    dependencies {
    classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.4.1'
    }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    可以替换一下两个插件
    apply plugin: ‘org.springframework.boot’
    apply plugin: ‘io.spring.dependency-management’

    二、多模块项目

    在这里插入图片描述

    1、settings.gradle

    
    rootProject.name = 'test'
    include 'test_bean'
    include 'test_common'
    include 'test_gateway'
    include 'test_service'
    include 'test_service:service_user'
    
    findProject(':test_service:service_user')?.name = 'service_user'
    include 'test_service:service_order'
    findProject(':test_service:service_order')?.name = 'service_order'
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、build.gradle

    description 'gradlegradle微服务实战父工程'
    
    //构建Gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
    buildscript {
        ext {
            springBootVersion = '2.2.1.RELEASE'
            springCloudVersion = 'Hoxton.RELEASE'
            springCloudAlibabaVersion = '0.2.2.RELEASE'
        }
    
        //设置仓库
        repositories {
            maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
            maven { url 'https://repo.spring.io/milestone'}
        }
    
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        }
    }
    
    //配置全局, 包括root项目和子项目
    allprojects {
        group 'com.test'
        version '1.0-SNAPSHOT'
    
    
        //配置编码格式
        tasks.withType(JavaCompile) {
            options.encoding = "UTF-8"
        }
    
        //设置仓库
        repositories {
            maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
            maven { url 'https://repo.spring.io/milestone'}
        }
    
    
    }
    
    apply from: 'version.gradle'
    
    //配置所有子项目
    subprojects {
    
        apply plugin: 'java'
        apply plugin: 'java-library' //api
        apply plugin: 'io.spring.dependency-management'
    
        sourceCompatibility= JavaVersion.VERSION_1_8
        targetCompatibility=  JavaVersion.VERSION_1_8
    
    
        //公用的依赖
        dependencies {
            testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
            testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
        }
    
        test {
            useJUnitPlatform()
        }
    
    
        // dependencyManagement版本统一管理,类似于父maven的dependencyManagement
        dependencyManagement {
            dependencies {
                for(depJar in rootProject.ext.dependencies){
                    dependency depJar.value
                }
            }
            imports {
                mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
                mavenBom "org.springframework.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"
            }
        }
    }
    
    
    project(':test_bean'){
        description("gradle微服务实战之bean层:存放表对应的实体类")
    }
    
    project(":test_common"){
        description("gradle服务实战之公共模块:存放微服务常用的工具类")
        //依赖
        dependencies {
            api 'com.alibaba:fastjson'
            api 'mysql:mysql-connector-java'
            api 'com.baomidou:mybatis-plus-boot-starter'
            api 'io.springfox:springfox-swagger2'
            api 'io.springfox:springfox-swagger-ui'
            api 'io.jsonwebtoken:jjwt'
    
            api 'org.springframework.cloud:spring-cloud-starter-openfeign'
            api 'org.springframework.cloud:spring-cloud-starter-alibaba-sentinel'
            api 'org.springframework.cloud:spring-cloud-starter-alibaba-nacos-discovery'
    
        }
    }
    
    project(":test_service"){
        description("gradle微服务实战之服务模块:存放各个微服务模块")
        apply plugin: 'org.springframework.boot'
    
        subprojects {
            apply plugin : 'java-library'
            apply plugin: 'org.springframework.boot'
    
            dependencies {
                api 'org.springframework.boot:spring-boot-starter-web'
                api project(':test_bean')
                api project(':test_common')
            }
        }
    
    }
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121

    3、version.gradle

    // 依赖版本管理
    ext {
        version = [
                "fastjsonVersion"   : "1.2.71",
                "mybatisPlus" : "3.0.4",
                "mysql" : "5.1.47",
                "swaggerVersion": "2.8.0",
                "jjwtVersion": "0.6.0"
        ]
    
        dependencies = [
               "swagger"                       : "io.springfox:springfox-swagger2:${version.swaggerVersion}",
                "fastjson"                      : "com.alibaba:fastjson:${version.fastjsonVersion}",
                "mybatis-plus-boot-starter"     : "com.baomidou:mybatis-plus-boot-starter:${version.mybatisPlus}",
                "mysql"                         : "mysql:mysql-connector-java:${version.mysql}",
                "swaggerUI"                     : "io.springfox:springfox-swagger-ui:${version.swaggerVersion}",
                "jjwt"                          : "io.jsonwebtoken:jjwt:${version.jjwtVersion}"
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    4、test_service的配置

    build.gradle

    bootJar {
        enabled = false
    }
    
    • 1
    • 2
    • 3

    5、service_order、service_user的配置

    子项目如果有单独依赖的包可以自己生命,如果没有就是使用总根目录配置的
    build.gradle

    plugins {
        id 'java'
    }
    
    group 'com.test'
    version '1.0-SNAPSHOT'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    }
    
    test {
        useJUnitPlatform()
    }
    
    bootJar {
        enabled = false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    汽车总线系统
    [vite] Failed to load source map for */*.css.js
    GD32F103x IIC通信
    本地电脑如何连接使用腾讯云服务器
    分布式事务解决方案
    C字符串操作笔记
    一百九十、Hive——Hive刷新分区MSCK REPAIR TABLE
    Linux云服务器如何快速安装宝塔面板?
    【Java八股文总结】之MySQL数据库
    超越npm和yarn的包管理工具,为什么说pnpm才是工程化项目的未来。
  • 原文地址:https://blog.csdn.net/weixin_43333483/article/details/128068816