项目迁往go mod

首先升级go语言版本至1.13以上,配置好相关常量

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

linux系统下进入目标项目目录,执行

go mod init

能够自动生成一个空的go.mod文件,说他是空的是因为此时该文件中不会标记任何包依赖

然后执行

go mod tidy

此指令会自动检索项目中使用的依赖,自动下载能够下载的那些依赖包,并记录在go.mod以及go.sum中

指令执行完毕可以查看go.mod,会发现已经自动帮我们加上了require(当然啦前提是你的项目有依赖包的话)

如果项目中有部份依赖是本地别的项目,则执行该指令时会报错,会给我们指出是哪些依赖找不到

推荐趁此机会理一理项目中使用的依赖,将不必要的(如官方就有的)或是引入了两个相同功能的(不同文件相同功能引用不同的包)依赖进行清理

之后按照指令列出的找不到的依赖,一个一个确认他们在本地的相对路径,并写入go.mod中,格式如下

replace navi/kstgo => ../kstgo
replace 在项目中import的路径 => 本地项目的相对路径

以此法将所有依赖的本地项目全部引入,可执行多次 go mod tidy 来检查是否已经能够找到所有的包,如果没报错则可尝试进行 go build

在引入本地项目的过程中,需要被依赖的本地项目也有go.mod文件,即也需要mod化

个人感觉其实go.mod就相当于package.json,go.sum就相当于package-lock.json,go mod download就相当于npm install


附部分相关指令

指令 效果
go mod init 在项目中生成go.mod文件
go mod tidy 检索项目中使用的依赖并加入到go.mod文件中
go get -u 更新现有的依赖
go mod download 下载go.mod文件中指明的所有依赖
go mod edit 修改go.mod文件,直接vim应该也一样
go mod vendor 导出现有的所有依赖
go mod graph 查看现有的依赖结构【看不懂,感觉就是打印了go.sum
go mod verify 校验一个模块是否被篡改过

附一个完整的go.mod文件内容范例

module navi/kvp-mps

go 1.13

require (
	baliance.com/gooxml v1.0.1
	github.com/astaxie/beego v1.12.0
	github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0 // indirect
	github.com/dgrijalva/jwt-go v3.2.0+incompatible
	github.com/go-redis/redis v6.15.6+incompatible
	github.com/go-sql-driver/mysql v1.4.1
	github.com/golang/protobuf v1.3.2
	github.com/jinzhu/gorm v1.9.11
	github.com/lib/pq v1.2.0 // indirect
	github.com/onsi/ginkgo v1.10.2 // indirect
	github.com/onsi/gomega v1.7.0 // indirect
	golang.org/x/text v0.3.2
	navi/kstgo v0.0.0-00010101000000-000000000000
	navi/kvp-soap v0.0.0-00010101000000-000000000000
	navi/kvp-tiny v0.0.0-00010101000000-000000000000
	navi/navi-go-log v0.0.0-00010101000000-000000000000
)

replace (
	navi/kstgo => ../kstgo
	navi/kvp-soap => ../kvp-soap
	navi/kvp-tiny => ../kvp-tiny
	navi/navi-go-log => ../navi-go-log
)

你可能感兴趣的:(#,GO,go,go语言,gomod)