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 常用设置