首页 > 其他分享 >Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象

时间:2024-09-18 14:51:09浏览次数:11  
标签:5.3 成多 Spring 配置 boot 模块 spring org cloud

我们已经将Eureka Service工程和Gateway工程分别做成了demo-springcloud工程的两个模块,到这有一个不大不小的问题:

有一些配置及依赖是每个模块都会用到的,难道每新建一个模块都要重新拷贝一遍配置?

答案当然是NoNoNo!我们可以把一些通用的配置及依赖项抽象到父级模块(或者顶级的工程)下,接下来我们就抽一下eureka和gateway这两个模块。

我们用idea自带的对比工具对比一下eureka和gateway中的build.gradle文件,如下图所示,发现这两个文件中有很多一样的地方,比如plugins、group、依赖仓库配置和springcloud的版本变量配置等等,这些都是可以不用重复设置的。

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_gradle

我们可以将通用的配置转移到父级,也就是工程级别的build.gradle文件中,作为全局配置,首先是插件配置plugins:

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_spring cloud_02

拷贝过来后,就可以把原来的plugins删掉了。

接下来是spring cloud版本号,拷过来后同时删除原来两个模块中的设置。

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_gradle_03

上面两处配置是全局配置,是整个工程都会使用的配置,接下来我们配置点不一样的。

subprojects

在subprojects块内的配置表示所有子模块都会使用的配置,其中就包括通用的依赖项。

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_spring cloud_04

这里配置了3部分:

第一部分,apply plugin。前面在plugins块中声明了三个插件,我们需要在每个子模块中使用他们。

第二部分,group。所有微服务都由同一家公司开发(鄙人不才,正是在下),所以group肯定要统一。

第三部分,repositories依赖仓库。所有模块当然使用相同的依赖仓库配置,除了mavenCentral,也可以添加国内的仓库镜像配置。

配置好这些后,记得在子模块中删掉对应的配置。

接下来继续在subprojects中添加内容,添加好后不要忘了将子模块中相同的部分删掉。

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_spring cloud_05

最后子模块只保留各自独特的部分。

附上完整的三个build.gradle代码:

project build.gradle

plugins {
    id 'java'
    // spring 依赖管理插件
    // https://plugins.gradle.org/plugin/io.spring.dependency-management
    id 'io.spring.dependency-management' version '1.1.6'
    // spring boot系列版本,不需最新,与mavenBom依赖的版本相同就好
    id 'org.springframework.boot' version '3.2.6'
}

ext {
    // spring cloud套装版本号
    // 在 https://mvnrepository.com/ 搜spring-cloud-dependencies可以找到版本列表
    set('springCloudVersion', "2023.0.2")
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    group = 'com.hao1st'
    repositories {
        mavenCentral()
    }

    // 编译和打包时将xml文件也一同编译,idea可用
    sourceSets.main.resources.srcDirs=["src/main/java","src/main/resources"]

    dependencyManagement {

        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        }
    }

    dependencies {
        developmentOnly 'org.springframework.boot:spring-boot-devtools'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }

    test {
        useJUnitPlatform()
    }
}

eureka build.gradle

version = '0.0.1-SNAPSHOT'

dependencies {
    // --- Spring cloud starter ---
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
    // --- Spring boot starter ---
    implementation 'org.springframework.boot:spring-boot-starter-security'

}

gateway build.gradle

version = '0.0.1-SNAPSHOT'

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}

怎么样,抽象出来之后,各子模块只需要管理自己独有的依赖项就好了,是不是很方便?

最后的最后,一次运行eureka模块和gateway模块,访问eureka面板界面,效果如下:

Spring Cloud 5.3: 将多工程整合成多模块工程-构建配置抽象_gradle_06

标签:5.3,成多,Spring,配置,boot,模块,spring,org,cloud
From: https://blog.51cto.com/u_8549061/12046187

相关文章

  • springCloud整合nacos
    关于springCloud整合nacos主要步骤如下(主要介绍nacos作为注册中心使用的配置)1、添加依赖;2、添加配置;3、服务启动,查看注册信息1、添加依赖:<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-......
  • Spring Cloud 5.2: 将多工程整合成多模块工程-gateway
    书接上回,参照上一篇"移植"Eureka的套路,将gateway工程"移植"到模块中移植方式跟eureka一样,这里不过多赘述,注意这几步就好:1.build.gradle2.application.yml3.GatewayApplication:入口类的名称规则为模块名(ArtifactId)+Application,由于我移植时模块名与原工程名不同,所以做了改动。4.......
  • 【25届毕设选题推荐】基于SpringBoot的教育资源共享平台(源码+部署+文档指导)
    前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务......
  • 【2025】基于Spring Boot和uniapp的物流管理小程序(源码+文档+调试+答疑)
    ......
  • Spring Boot解决循环依赖
    一、前言环依赖是指两个或者多个bean互相依赖对方,从而形成一个闭环。例如:BeanA依赖于BeanB,而BeanB又依赖于BeanA。可能会导致Spring在尝试创建这些bean实例时出现问题,因为他们互相等待对方被创建,最终导致应用程序无法启动。Spring是如何发现这种循环依赖的问题的呢?通过依赖图来......
  • 基于微信小程序UNIAPP+Spring Boot的涪陵区特色农产品交易系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低特色农产品交易的运营人员成本,实现了涪陵区特色农产品交易的标准化、制度化、程序化的管理,有效地防止了......
  • 基于Spring Boot的付费自习室管理系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言付费自习室管理系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了springboot框架。该系统从两个对象:由管理员和用户来对系统进行设计......
  • Springboot环球视野网站92i41--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着全球化进程的加速,信息交流与文化传播日益频繁,公众对于国际时事、多元文化、全球经济动态的需求日益增长。环球视野网站旨在......
  • Springboot机械零件仓储管理系统a0pe2程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着工业化的快速发展,机械零件作为工业生产的基础组成部分,其仓储管理变得尤为重要。传统机械零件仓储管理方式存在效率低下、信......
  • Springboot基于HTML5+CSS3的信息化农村综合服务平台690g7
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着信息技术的飞速发展,信息化已成为推动农村经济社会发展的重要力量。构建基于HTML5+CSS3的信息化农村综合服务平台,旨在利用现......