use*_*878 5 java ivy dependency-management
我们的项目就像适用于大量不同其他库的适配器/外观接口.依赖关系以某种方式重叠,有时会发生冲突,有时甚至会使项目中断,因为错误版本的依赖项会提供相同接口的错误行为.我们使用Ivy和Ant来进行基本的依赖关系管理.在早期管理依赖关系和检测错误行为的最佳做法是什么?
这个问题的重要部分是关于过程,而不是工具。
如果项目的依赖项由其他团队或第三方拥有,则该项目必须显式接受每个新依赖项的每个新版本。允许依赖项自行升级将允许他们在没有警告的情况下破坏依赖的项目,这听起来像是正在发生的事情。
每个依赖项都必须发布已知版本,无论是版本控制中的二进制文件还是标签,还是适合您的堆栈的任何版本。每次项目想要升级依赖项时,都必须测试升级的结果。(像往常一样,全面的自动化测试将是一个很大的帮助。)如果失败(因为依赖关系刚刚被破坏,或者因为依赖关系引入了传递依赖关系的不兼容版本),请放弃升级,将问题报告给所有者依赖项,并在发布修复问题的版本后重试。如果成功,请更改项目在其构建配置中使用的依赖项的版本。
理想情况下,项目将一次升级一个依赖项,并单独全面测试每个升级。如果有必要一次升级多个依赖项(可能是因为两个依赖项都依赖于第三个依赖项,而系统中只能有一个版本),那也没关系,尽管这是一个更大的更改,因此风险更大。如果您的项目具有这样的传递依赖项,那么值得付出工程努力使它们在尽可能多的合理版本上向后兼容。
当然,许多工具很容易支持这个过程:只需将每个依赖项固定到特定版本即可。
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |