项目依赖库的规范探索


二方库

名称 说明
一方库 指项目内的各个模块,一般不会被项目组外所使用,通常使用的是最新版本
二方库 指公司内部公共库,会被公司的各个项目组所使用,而且每个项目组所依赖的版本不一定一致,需要严格管理版本
三方库 一般代指公司外部的公共库,由公司外的开发团队进行版本维护,版本可控性难以控制,公司引入的时候要进行严格的版本验证

在实际项目中一个订单系统最简单的分层通常会是下面的结构

order-server中是订单系统的业务代码,而order-api中会定义一些接口和入参和返回值,order-api会被同项目的其他系统所依赖,也有可能会被其他项目组的系统所依赖,所以一方库和二方库的界限一般比较模糊,下面主要探索api项目的结构规范。

为避免二方库的依赖冲突问题,二方库的发布应该遵循以下原则

  • 精简可控原则,移除一切不必要的API和依赖,只包含Service API,必要的领域模型对象,常量、枚举等,如果依赖其他的二方库或者三方库,尽量的使用provided引入,让使用者选择具体使用的版本号。
  • 稳定可追溯原则,每个版本的变化应该被记录,除非用户主动升级版本,否则二方库的行为不应该发生变化。二方库的新增或者升级需保持功能点之外的依赖不应该发生改变,如果需要发生改变,需要给出明确的评估和验证。

除以上两个原则外,还总结了以下需要注意的关键点

  • 二方库中可以定义枚举类型,参数可以使用枚举类型,但接口的返回值禁止使用枚举类型或者包含枚举类型的对象。

    说明:随着功能的迭代,枚举类型有可能发生变化,参数中使用枚举类型可以限制相关字段的合法性,但是返回值中则不同,如果后续版本中枚举增加,而其他系统依赖的是低版本的库,那么使用者在进行反序列化时会发生异常。

  • 二方库的新增或升级,保持除功能点之外的其它 jar 包仲裁结果不变。如果有改变,必须明确评 估和验证。

    说明:在升级时,进行 dependency:resolve 前后信息比对,如果仲裁结果完全不一致,那么通过 dependency:tree 命 令,找出差异点,进行排除 jar 包。

  • 建议将依赖的放在父项目的中,所有版本仲裁放在语句块中。

    说明:只声明版本,并不引入,因此子项目中需要显示的引入,version和scope都读取中的声明。而所有声明里的依赖都会自动引入,并默认被所有的子项目继承。

  • 二方库中尽量不要有配置项,配置项应该由使用者进行定义

  • 二方库应该尽量的简洁,如果必须使用一些三方库,尽量的使用provided引入,例如需要使用lombok,那么使用provided由使用者去进行引入,否则可能会造成版本冲突。


文章作者: gloamfox
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 gloamfox !
 上一篇
Markdown LaTeX公式指南
本文详细介绍了在Markdown中使用LaTeX编写数学公式的方法,包括基础公式标记、希腊字母、上下标、括号、分式、特殊符号、矩阵、表格等高级功能,以及各种数学运算符的使用技巧,帮助用户在Markdown文档中高效地编写专业的数学公式。
2025-09-19
下一篇 
IntelliJ IDEA激活教程
本文详细介绍了IntelliJ IDEA 2023.1的激活方法,包括工具包下载、安装步骤、环境变量配置以及激活码使用。文章提供了具体的操作指南和注意事项,帮助用户成功激活IDEA开发环境,并解决可能出现的激活问题。
2025-02-28
  目录