golang 包管理机制

golang 通过goroot, gopath对项目进行管理,goroot目录安装go语言包,gopath作为workspace放项目代码。同时将goroot, gopath加入系统的环境变量即可。golang在import依赖库的时候,是使用相对于gopath/src目录下的相对路径。当使用go get命令时,会扫描源代码里面的import语句,将相应的第三方引用下载到gopath/src下对应的目录里。

但是这样做存在以下问题:
1,每个项目的开发环境无法隔离。
2,不同项目如果引用第三方依赖,依赖库会下载到同一个gopath里面,如果不同项目引用了不同版本的依赖库,便会造成冲突。

然后vendor就诞生了,在go1.6之后就默认开启。

vendor的处理方式是:
将第三方依赖放入当前项目vendor目录中, 编译的时候从vendor目录中查找依赖而不从GOPATH/src中对应目录中查找。
新增的第三方包直接被get到根目录的vendor文件夹下,不会与其它的项目混用第三方包,完美避免多个项目同用同一个第三方包的不同版本问题。因此只需要对vendor/vendor.json进行版本控制,即可对第三包依赖关系进行控制。

那么如何使用呢
一.安装

go get -u github.com/kardianos/govendor

二.添加依赖,使用help命令查看帮助

  1. 进入到项目目录
  2. 使用govendor init命令初始化项目的依赖
  3. 运行govendor fetch命令增加依赖
  4. 打开./vendor/vendor.json查看依赖的包
Go语言的第三方管理机制经历了三个重要的阶段:GOPATH、Vendor和Go Module。 1. 第一阶段:GOPATH 在Go语言早期版本中,使用全局的GOPATH来管理所有的第三方。GOPATH是一个环境变量,它指定了Go语言的工作目录。当我们使用go get命令下载第三方时,它会被下载到GOPATH目录下的src、pkg和bin目录中。这种方式的缺点是所有的项目都共享同一个GOPATH,当不同项目使用同一个第三方的不同版本时,会出现冲突。 2. 第二阶段:Vendor 为了解决GOPATH的缺点,Go语言引入了Vendor机制。Vendor机制将项目的依赖局部化,每个项目都有自己的Vendor目录,用于存放项目所依赖的第三方。当我们使用go get命令下载第三方时,它会被下载到项目的Vendor目录中。这种方式的缺点是当我们需要更新第三方时,需要手动更新Vendor目录中的。 3. 第三阶段:Go Module Go语言的最新功能Go Module是一种更加先进的第三方管理机制。它将每个项目都看作一个独立的模块,每个模块都有自己的go.mod文件,用于记录项目所依赖的第三方及其版本信息。当我们使用go get命令下载第三方时,它会被下载到项目的go.mod文件中指定的目录中。这种方式的优点是可以自动管理第三方的版本,当我们需要更新第三方时,只需要修改go.mod文件中的版本信息即可。 以下是一个使用Go Module管理第三方的例子: 1. 创建一个新的项目目录,并初始化Go Module: ``` mkdir myproject cd myproject go mod init example.com/myproject ``` 2. 在项目中使用第三方: ``` import "github.com/go-redis/redis" ``` 3. 下载第三方: ``` go get github.com/go-redis/redis ``` 4. 查看项目依赖的第三方: ``` go list -m all ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值