依赖管理有gradle和maven,在这里选择比较常用和方便的Maven作为工程项目和依赖管理工具来搭建SpringCloud实战工程。主要用到的maven管理方式是多模块和bom依赖管理。
Maven 多模块项目相对于单模块项目而言,依赖是不共享的,但父模块提供了全局共享依赖的功能,可以针对不同模块所需要依赖的包进行分模块引入。具体如下:
junit可以统一由父模块中的设置依赖。中统一管理依赖版本,再由每个子模块自主引入依赖,这样设置可以达到项目中多个子模块依赖的包版本统一的目的。统一管理,而如果确认后续不会再加子模块的,可以按前者进行处理。在父模块中,可通过统一管理依赖包的版本,让共享包也更加统一管理。
Maven 的 BOM(Bill of Materials)依赖管理是一种用于集中管理项目依赖关系和版本的方式,它提供了一种方便的方法来确保多个项目或模块在使用相同依赖时具有一致的版本。
BOM 通常是一个特殊的 Maven POM(Project Object Model)文件,其中定义了项目所需的依赖项及其版本。通过在其他项目中引用这个 BOM,这些项目将自动获取 BOM 中定义的依赖版本,而无需明确指定每个依赖的版本。
这样做的好处是可以减少重复的依赖配置工作,并确保在多个项目中使用相同的依赖版本,从而减少由于依赖不一致导致的问题。此外,BOM 还可以用于管理依赖的升级和版本控制,只需在 BOM 中更新依赖的版本,所有引用该 BOM 的项目都会自动获取最新的版本。
要使用 Maven 的 BOM 依赖管理,通常需要执行以下步骤:
部分引用 BOM POM 文件。在“SpringCloud2023最新版本该如何进行组件选型?”一文中已经具体的介绍了SpringCloud的组件对比和选型,具体可以查看合集里面的相关文档。
在“SpringCloud和SpringBoot的版本依赖该怎么选择”一文中已经具体的介绍了SpringCloud的版本如何选择,具体可以查看合集里面的相关文档。
| 组件 | 版本 |
|---|---|
| jdk | 17 |
| spring boot | 3.2.x |
| spring cloud | 2023.0.x |
| spring cloud alibaba | 2022.0.0.0(还未更新,但是兼容2023) |
选择JDK17的原因如下:
|-- banana-client1
|-- banana-client2
|-- banana-client3
|-- banana-client4-sentinel
|-- banana-client5-tracing
|-- banana-client6-test
|-- banana-common
| |-- banana-common-bom
| `-- banana-common-core
|-- banana-config
|-- banana-gateway
|-- banana-gateway-sso
`-- banana-seata-example
banana-common-bom 负责管理整个公共依赖的版本,比如undertow、swagger的版本。banana-common-core 负责管理整个公共组件的引入,比如 hutool、validation、test等。gateway 相关项目为SCG相关工程。client 相关项目为springboot相关工程。该maven的pom文件定义了如下内容:
4.0.0
io.rainforest
banana
1.0
pom
banana-gateway
banana-config
banana-common
banana-client1
banana-client2
banana-client3
banana-client4-sentinel
banana-client5-tracing
banana-client6-test
banana-seata-example
banana-gateway-sso
17
17
UTF-8
3.2.3
2023.0.0
2022.0.0.0
io.rainforest
banana-common-bom
${project.version}
pom
import
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
central
Central Repository
https://mirrors.huaweicloud.com/repository/maven/
default
false
${project.name}
src/main/resources
true
org.springframework.boot
spring-boot-maven-plugin
${spring-boot.version}
${project.build.finalName}
true
repackage
该maven的pom文件定义了如下内容:
io.rainforest
banana-common-bom
1.0
4.0.0
pom
banana-common-bom 公共依赖管理
${project.version}
3.1.3
UTF-8
2.17.1
17
17
4.9.9
0.0.39
1.2.83
2.1.0
2.2.14
3.5.3.2
8.0.33
4.1.3
1.6.1
3.1.0
7.1
3.0.0
2.3.5
5.4.0
5.8.21
3.0.8
1.8.4
io.rainforest
banana-common-core
${banana.common.version}
com.mysql
mysql-connector-j
${mysql.version}
org.springdoc
springdoc-openapi-starter-webflux-ui
${springdoc.version}
org.springdoc
springdoc-openapi-starter-webmvc-api
${springdoc.version}
io.swagger.core.v3
swagger-annotations-jakarta
${swagger.core.version}
com.alibaba
fastjson
${fastjson.version}
com.baomidou
dynamic-datasource-spring-boot3-starter
${dynamic-ds.version}
io.springboot.sms
aliyun-sms-spring-boot-starter
${sms.version}
io.seata
seata-serializer-kryo
${seata.version}
com.baomidou
mybatis-plus-boot-starter
${mybatis-plus.version}
com.baomidou
mybatis-plus-extension
${mybatis-plus.version}
com.baomidou
mybatis-plus-annotation
${mybatis-plus.version}
cn.hutool
hutool-bom
${hutool.version}
pom
import
net.dreamlu
mica-bom
${mica.version}
pom
import
org.springframework.boot
spring-boot-starter-web
${spring-boot.version}
spring-boot-starter-tomcat
org.springframework.boot
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
4.3.0
io.github.git-commit-id
git-commit-id-maven-plugin
${git.commit.plugin}
io.spring.javaformat
spring-javaformat-maven-plugin
${spring.checkstyle.plugin}
和“SpringCloud实战”对应的源码信息如下:
来自一线全栈程序员nine的八年探索与实践,持续迭代中。欢迎关注“雨林寻北”或添加个人卫星codetrend(备注技术)。
登录查看全部
参与评论
手机查看
返回顶部