关于拆分boot工程的踩坑之maven多模块间的依赖关系处理

简介: 关于拆分boot工程的踩坑之maven多模块间的依赖关系处理

一、辨析springboot与springcloud与springcloudalibaba

SpringBoot:这个大家经常使用应该明白,

SpringCloud:cloud工程基于boot实现

SpringCloudAlibaba:基于SpringCloud实现

其实就是套娃关系,但是引入SpringCloud之后无需再次引入SpringBoot,而引入SpringCloudAlibaba一定需要引入SpringCloud,注意三者之间的版本关系,这里互联网上有许多,自行查看

SpringCloud的设计理念与SpringBoot是不一样的

springboot的设计理念是提供一种快速、轻松地构建独立、可执行的、生产级别的 Spring 应用程序的方式。Spring Boot 集成了大量的默认配置和开箱即用的功能,旨在减少开发者配置和繁琐的设置。

Spring Cloud 是用于构建分布式系统和微服务架构的项目。它的设计理念是提供一套工具和组件,以解决构建和管理分布式系统的挑战。Spring Cloud 在 Spring Boot 基础之上构建,旨在使开发者能够更轻松地构建和管理分布式架构。

二、maven的一些介绍

先介绍几个maven标签

  • modules:用于添加子模块
  • properties:自定义版本信息
  • dependencyManagement:依赖管理,只是做声明,不会真的引入依赖

三种版本管理方式

  • 在properties中定义版本号,子模块使用${}引入即可
  • 在dependencyManagement中声明依赖信息,子模块直接引入,不需要写版本号
  • 在properties定义版本,在dependencyManagement中声明,最后在子模块引入

笔者的一些最佳实践

  • 所有的依赖都在父模块中使用properties定义,便于统一管理
  • 只有所有模块都依赖的组件才在dependencyManagement中声明
  • 可以在dependencyManagement中声明自己的核心模块

三、踩坑点

1. mysql-connector-java

在boot项目中是有默认的版本号的,但是在cloud中没有,因为不同的服务使用的版本可能是不一样的,所以需要显示声明版本号,否则会找不到依赖

2. 最好使用上文的最佳实践

笔者在这块出了许多问题,但是只要按照上文三条规则来即可避免,也是踩的最多的坑

3. springcloud

在cloud中是不需要引入bootstart的,但是一定要引入spring-cloud-starter-bootstrap

4. nacos连接失败

  1. 检查版本问题,读者采用若依微服务版本,不可能有错
  2. 检查9848喝9849端口,新版本需要使用这两个
  3. 修改cloudalibaba版本 发现是9849拒绝连接 但是检查发现端口没有被占用
  4. 询问chatgpt
  5. 佛系重启
  6. 重启nacos,查看nacos配置
  7. 摆烂几个小时之后发现是nacos客户端版本问题
  8. 迅速去github找到nacos升级
  9. 启动连接成功
相关文章
|
3月前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
9天前
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
37 10
|
22天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
1月前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
501 3
|
1月前
|
Java Maven
Maven 依赖管理
Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
68 5
|
2月前
|
Java Maven
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
35 5
|
3月前
|
安全 Java Maven
优化Maven镜像配置:使用阿里云加速依赖下载
更新Maven镜像配置至关重要,尤其使用阿里云仓库时。在`settings.xml`中加入特定镜像配置可显著提升依赖下载速度。示例配置指定了阿里云镜像ID、替代表态仓库、安全的URL、默认布局及启用版本管理。需定位至用户目录下的`.m2/`文件夹编辑`settings.xml`,添加镜像信息后保存测试。若下载仍慢,考虑网络状况或备选镜像。多镜像设置时需注意避免冲突。
537 3
|
3月前
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
189 1
|
3月前
|
Java Maven
intellij idea如何查看项目maven依赖关系图
这篇文章介绍了如何在IntelliJ IDEA中查看项目的Maven依赖关系图,包括使用Maven工具栏和相关操作来展示和查看依赖细节。
|
3月前
|
Java Maven 开发者
"揭秘IDEA的神奇助手:Maven Helper插件,让你轻松驾驭复杂依赖,告别冲突噩梦!"
【8月更文挑战第20天】Maven Helper是一款提升Java开发者工作效率的IDEA插件,它能直观展示项目依赖关系并协助管理。主要功能包括依赖树视图、冲突检测与解决及依赖排除。安装简便,重启IDEA后即用。借助其“Dependencies”面板,开发者可以清晰了解依赖详情,快速定位并解决冲突问题,有效优化项目结构,提升开发效率。
225 0