Go module

Go module

文章目录

简介

Go的包管理方式是逐渐演进的,一开始所有的包都是放在GoPath下的

  • GoPath不区分项目,任何import的路径都是葱花Gopath为根目录开始的
  • 如果存在多个项目并且不同项目对于同一个依赖库的版本需求不一样时,
    无法在同一个GOPATH下放置不同版本的依赖项

Go Module是语义化版本管理的依赖项的包管理工具,解决了GoPath存在的缺陷,是Go官方的版本管理工具

使用

首先,创建一个新的工程

package awesomeProject3

import "fmt"

func TestGoMod()  {
	fmt.Print("使用go mod")
}

随后,使用go mod init moduleName初始化工程为go mod工程

go mod init github.com/Kevin091827/GoLearning/gomod 

此时会得到一个go.mod文件,一般的moduleName都是具体的某个仓库的地址

module github.com/Kevin091827/GoLearning/gomod

go 1.16

其次,将代码推送到github,push成功后就可以通过go get进行依赖包拉取

go get github.com/Kevin091827/GoLearning/gomod 

随后,更新模块发布版本

package awesomeProject3

import "fmt"

func TestGoMod()  {
	fmt.Print("使用go mod")
	fmt.Println("tag 1")
}

发布版本

 git tag 1.0.0   
 git push origin master --tag

使用已经发布的版本,go mod默认会去找可用的依赖包的最高版本

重新执行go build即可更新依赖

如果需要使用特定版本,只需要在require后加上版本即可

require github.com/Kevin091827/GoLearning/gomod v1.0.1

随后,如果有的依赖包不在github或者某个托管网站上,而是在本地,此时需要通过replace重新指定依赖包地址,重新指定后,编译时就能找到依赖包

replace 3rd/module/testmod => /usr/local/go/testmod

最后,还有go mod vender,在默认情况下go build将忽略vendor目录,如果要从vendor目录开始构建:

go build -mod vendor

这样做的好处可以不用依赖网络上游的版本,在内部自由使用稳定可控制的版本进行构建,go mod vendor应该会成为非开源项目的主要构建方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值