Go依赖包版本冲突解决

GO项目开发中存在多个包依赖同一个第三方包的不同版本的情况。例如包A依赖包C的v1.0.0版本,包B依赖包C的v2.0.0版本。go build时会按照高位兼容原则,取依赖包的v2.0.0版本。如果C未实现向前兼容,build时就会报错。

解决方法

最理想的解决方式是升级包A的版本,即执行

go get -u A

但如果A的最新版本依赖的是包C的v1.5.0版本,那么还是会遇到上述问题。这时候就需要对包B进行降级,降级步骤如下:

go get C@v1.5.0 // 先将包C降级到v1.5.0版本
go build // 编译时会自动下载符合的B版本包

总结

出现这个问题的根因是公共依赖包开发时未做向前兼容,开发Go模块时一定要做兼容,因为你不确定谁会引用这个模块。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容