[Go] package management

vender way

//包管理发展

go get(无版本概念) -> vender(godep)(无版本概念) -> go modules
go get github.com/tools/godep
godep save     // 将依赖项输出并复制到Godeps.json文件中
//vender查找顺序

project/vendor
gopath/src
goroot/src

go mod use

//开启go mod支持

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


GO111MODULE=off    //编译时, 从vender和gopath下找依赖
GO111MODULE=on     //编译时, 忽略vender和gopath从go.mod去下载依赖
GO111MODULE=auto   //在gopath之外创建目录
// 生成go.mod(go.mod位于项目根目录)
go mod init
go mod init 模块名

// 包管理元信息
go.mod //存放当前模块包名及版本
    module: 定义当前模块和包路径
    require: 定义依赖的模块和版本
    exclude: 排除特定的模块和版本的使用
    replace: 模块源的替换

go.sum //存放当前模块依赖包名以及版本,commit hash

//包下载(存储在gopath/pkg/mod下)
go build  //go文件引用了包,执行这些命令会自动更新go.mod
go run
go mod tidy

go mod vendor      //(便于阅码)将依赖复制到vendor下

//依赖更新
go get [email protected]  //升级某个包
go list -m all     //列出当前依赖
go ilst -m -u all  //列出可升级的依赖
go get -u          //升级所有依赖

Update go.mod example

// go get更新go.mod
go get github.com/tietang/dbx


// go.mod会被更新为
require (
    github.com/tietang/dbx v1.0.0
)
//直接程序里写,然后go run/build也会更新go.mod

import (
    "fmt"
    "github.com/tietang/dbx"
    "github.com/tietang/go-utils"
)
func main() {
    x:=dbx.Database{}
    fmt.Println(x)
    utils.GetAllIP()
}

Guess you like

Origin www.cnblogs.com/iiiiiher/p/11965762.html