一文详解go mod依赖管理详情

作者:树獭叔叔 时间:2023-07-13 04:35:06 

1. go的依赖管理发展

一文详解go mod依赖管理详情

  • GOPATH 所有的依赖都放置在同一路径下,可以复用下载的依赖,但是当不同项目需要依赖不同版本的依赖时,就很容易出现冲突问题。

  • govendor 解决了依赖库版本不一致的问题,但是不好控制(了解即可)

  • go mod 使用go.mod文件管理以来的版本,通过go get下载依赖

2. go.mod 文件分析

module xx/xx/xx/v2
go 1.16
require (
       xx/xx/xx v1.3.3
       xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed
xx/xx/xx v2.2.1+incompatible
xx/xx/xx v0.3.0 // indirect
)
exclude (
xx/xx/xx v1.3.3-rc.0
)
replace xx/xx/xx => xx/xx v1.3.3
retract (
   v1.0.0 // 废弃的版本,请使用v1.1.0
)

module xx/xx/xx/v2是指该项目的module路径,/v2是指版本信息,可以省略。

go 1.16是指项目需要的最低go的版本

require()是项目需要的其他依赖:

  • xx/xx/xx v1.3.3指明了项目需要的依赖以及版本号。

  • xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed是时间戳性质的版本号。

  • xx/xx/xx v0.3.0 // indirect是指依赖需要的依赖

  • xx/xx/xx v2.2.1+incompatible是指依赖的库的major版本大于引用的版本,不合规范。

exclude()指引用依赖时,跳过某些版本

replace xx/xx/xx => xx/xx v1.3.3指替换某些依赖

retract()声明废弃的版本

3. go mod依赖下载工具

go get xx/xx/x@${parameter}

${parameter}可以选择的参数如下: 

一文详解go mod依赖管理详情

go mod tidy 根据go.mod文件添加或者删除项目所需要的依赖

4. 可能出现的问题汇总

go get -u xx/xx/x

这个操作会升级依赖的依赖,有可能会引发依赖版本不兼容问题导致的编译不通过,比如thrift的0.13与0.14不兼容。

循环依赖问题:

一文详解go mod依赖管理详情

要注意避免循环依赖问题。

来源:https://juejin.cn/post/7109880275441549342

标签:go,mod,依赖,管理
0
投稿

猜你喜欢

  • django基础学习之send_mail功能

    2023-04-01 00:16:53
  • JS实现拖动模糊框特效

    2023-08-06 05:18:51
  • JavaScript来实现打开链接页面的简单实例

    2024-04-30 09:51:32
  • 使用JS的DOM文档对象模型获取前端循环的参数

    2024-04-10 13:54:46
  • SQL server 2008 数据安全(备份和恢复数据库)

    2024-01-17 00:18:20
  • 导航设计的流行趋势

    2007-12-25 12:06:00
  • Python3爬虫中Ajax的用法

    2023-02-17 15:09:15
  • vue $mount 和 el的区别说明

    2024-04-28 09:20:24
  • 使用Pycharm分段执行代码

    2021-09-04 13:24:14
  • Python scikit-learn 做线性回归的示例代码

    2022-05-03 11:00:54
  • Python实现的逻辑回归算法示例【附测试csv文件下载】

    2023-12-09 21:08:33
  • php截取utf-8中文字符串乱码的解决方法

    2024-04-29 13:56:52
  • 基于 Python 实践感知器分类算法

    2022-08-08 05:49:31
  • Pytorch平均池化nn.AvgPool2d()使用方法实例

    2023-09-30 02:49:35
  • 什么是Python变量作用域

    2021-12-25 21:36:24
  • 详解go-micro微服务consul配置及注册中心

    2024-04-23 09:48:20
  • php模板引擎技术简单实现

    2023-11-14 13:28:37
  • opencv实现矿石图片检测矿石数量

    2021-08-26 02:17:39
  • Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    2021-05-22 15:22:13
  • 使用python远程操作linux过程解析

    2021-12-01 21:05:27
  • asp之家 网络编程 m.aspxhome.com