首页  

go 包管理工具 go mod     所属分类 go 浏览量 797
gopath问题
项目 要在 gopath src目录下 
依赖手动管理
依赖包没有版本 

govendor
依赖包全都下载到项目vendor下,每个项目都把有一份


go module是 Go1.11 之后官方推出的依赖管理工具
Go1.13开始, 作为默认的依赖管理工具
GO111MODULE off on auto  ,默认值 auto


off 禁用模块支持,编译时从 GOPATH 和 vendor 文件夹中查找包
on  启用模块支持,编译时忽略 GOPATH 和  vendor文件夹,只根据 go.mod下载依赖,将依赖下载至%GOPATH%/pkg/mod/ 目录
auto 当项目在 $GOPATH/src 外且项目根目录有go.mod文件时,开启模块支持


go.mod 和 go.sum
go.sum 记录每个依赖库的版本和哈希值


go mod包管理
不受GOPATH限制,可在任意目录创建工程
go mod init PROJECT_NAME 创建工程
自动生成go.mod文件
go.mod 称为模块根,所在目录为一个模块


go mod init hello
go: creating new go.mod: module hello

生成 go.mod
module hello

go 1.17



新建 hello.go

package main
import (
	"fmt"
)
func main(){  
	fmt.Println("hello go")
}

编译
go build

包依赖下载慢 ,可设置 GOPROXY
export GOPROXY=https://mirrors.aliyun.com/goproxy/


go mod download    下载依赖的module到本地cache(默认 $GOPATH/pkg/mod 目录)
go mod edit        编辑go.mod文件
go mod graph       模块依赖图
go mod init        初始化当前文件夹, 创建go.mod文件
go mod tidy        增加缺少的module,删除无用的module
go mod vendor      将依赖复制到vendor下
go mod verify      校验依赖
go mod why         解释为什么需要依赖


module github.com/dugang/myblog go 1.18 require ( github.com/a/b v0.0.0-20190408063150-3be636683586 github.com/gin-gonic/gin v1.6.0 github.com/go-sql-driver/mysql v1.6.1 github.com/jmoiron/sqlx v1.2.0 google.golang.org/appengine v1.6.1 // indirect ) module require 依赖包及版本 indirect 间接引用 语义化版本号 go get foo@v1.2.3 git的分支或tag go get foo@master git提交哈希 go get foo@e3702bed2 replace 替换成github上对应的库 replace ( golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0 )

上一篇     下一篇
temporal部署连接外部的postgres

使用 Dockerfile 构建 gohttphello server 镜像

temporal Java 例子说明

temporal 核心概念

git 分支操作

IDEA 常用设置