关于拆分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. 启动连接成功
相关文章
|
1月前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
4天前
|
Java Maven
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
17 5
|
1月前
|
安全 Java Maven
优化Maven镜像配置:使用阿里云加速依赖下载
更新Maven镜像配置至关重要,尤其使用阿里云仓库时。在`settings.xml`中加入特定镜像配置可显著提升依赖下载速度。示例配置指定了阿里云镜像ID、替代表态仓库、安全的URL、默认布局及启用版本管理。需定位至用户目录下的`.m2/`文件夹编辑`settings.xml`,添加镜像信息后保存测试。若下载仍慢,考虑网络状况或备选镜像。多镜像设置时需注意避免冲突。
158 3
|
1月前
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
103 1
|
1月前
|
Java Maven
intellij idea如何查看项目maven依赖关系图
这篇文章介绍了如何在IntelliJ IDEA中查看项目的Maven依赖关系图,包括使用Maven工具栏和相关操作来展示和查看依赖细节。
|
1月前
|
Java Maven 开发者
"揭秘IDEA的神奇助手:Maven Helper插件,让你轻松驾驭复杂依赖,告别冲突噩梦!"
【8月更文挑战第20天】Maven Helper是一款提升Java开发者工作效率的IDEA插件,它能直观展示项目依赖关系并协助管理。主要功能包括依赖树视图、冲突检测与解决及依赖排除。安装简便,重启IDEA后即用。借助其“Dependencies”面板,开发者可以清晰了解依赖详情,快速定位并解决冲突问题,有效优化项目结构,提升开发效率。
63 0
|
1月前
|
前端开发 Java 测试技术
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
|
1月前
|
Java
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
|
1月前
|
Java Maven Windows
Maven 引用jar包冲突 Intellij 查找排除JAR包的依赖关系(Maven Helper)
Maven 引用jar包冲突 Intellij 查找排除JAR包的依赖关系(Maven Helper)
42 0
|
2月前
|
Java 应用服务中间件 API
Maven依赖冲突解决总结
Maven依赖冲突解决总结
43 0