前提
- 分布式事务 seata 源码:GitHub - apache/incubator-seata: 🔥 Seata is an easy-to-use, high-performance, open source distributed transaction solution.
- 如果项目中使用了 seata 分布式事务,需要从 Index of /incubator/seata 下载已经编译好的二进制 jar
包文件,以2.5.0版本为例,大小为174M - 现在 seata 属于 apache 基金会,正在孵化中,历史二进制会被删除(
2026-01-09时,只有2.5.0的安装包) - 如果要将使用的二进制安装包储存起来代价有点高(近
200M的大小) - 如果能在项目中直接使用几个 依赖 和 java源文件 直接启动项目是最好的。
- 分析
2.5.0版本的项目可知,seata-server 源码模块
大小仍然有1.5M,并且文件内容较多,大概有100+个文件,如果遇见版本升级,代码变动较大,不是最优解
- 分析
- 如果能将 seata-server 源码模块 发布到 Maven
中央仓库,直接引入该模块最方便(项目中的代码最小,并且不会影响编译速度)- Maven 项目打包类型大概分为两类:
- 作为依赖的 jar 包(仅包含当前项目的代码,无其他直接、间接依赖,大小通常在
1M左右,源码编译完成在根目录下) - 作为 Spring Boot 打包(不仅包含当前项目的代码,还包含所使用的直接、间接依赖,大小通常最小有
40M+,源码编译完成在
BOOT-INF/classes文件夹中)
- 作为依赖的 jar 包(仅包含当前项目的代码,无其他直接、间接依赖,大小通常在
- Maven 项目打包类型大概分为两类:
直接使用 Maven 依赖的示例
- spring-cloud-alibaba-example/seata-server-2.x at main · xuxiaowei-com-cn/spring-cloud-alibaba-example · GitHub
- 直接覆盖需要需要的源代码即可(理论支持:
CLASSPATH=.;xxx) - 如果要使用不同的 seata 版本,需要使用对应版本的源码的配置进行覆盖,防止不同版本之间存在的差异导致运行异常
- 直接覆盖需要需要的源代码即可(理论支持:
