go mod

go mod

配置环境变量

export GO111MODULE=auto  

#auto 自动
#on 使用mod
#off 不使用mod
export GOPROXY=https://goproxy.io
#更改之后通过goproxy.io下载会很顺利(尤其有墙的时候)
export GOPROXY=https://mirrors.aliyun.com/goproxy/
#阿里云提供的go moudule代理仓库(相比上一个推荐用这个)

案例

在任意位置创建hello.go文件,写入如下内容:

package main

import (
    "fmt"
    "github.com/astaxie/beego"
)

func main() {
    beego.run()
    fmt.Println("hello go mod")
}
初始化mod
go mod init hello

这里的hello是指module名

不需要下载依赖包

go会下载的依赖放在gopath/pkg/mod/

replace

当我们遇上有些包无法下载(需要外网访问)时,我们可以在mod文件中用replace命令,让程序去GitHub上去找代码,如:

module hello

go 1.12

replace (
	golang.org/x/crypto => github.com/golang/crypto latest
	golang.org/x/net => github.com/golang/net latest
	golang.org/x/sync => github.com/golang/sync latest
	golang.org/x/sys => github.com/golang/sys latest
	golang.org/x/text => github.com/golang/text latest
	golang.org/x/tools => github.com/golang/tools latest
)

此时,这些包被下载到了$GOPATH/pkg/mod里面,其中,mod文件夹是自动创建的。

也可以指定自己的文件路径:

replace (
	github.com/astaxie/beego => /home/mod/astaxie/beego
)
引用当前目录下的其他包

新建文件夹utils,创建文件test.go:

package utils

import "fmt"

func Test() {
	fmt.Println("Test")
}

在hello.go中调用:

package main

import (
    "fmt"
    "github.com/astaxie/beego"
    "hello/utils"
)

func main() {
    utils.Test()
    beego.run()
    fmt.Println("hello go mod")
}

注意:

hello/utils格式是module名/包名

tidy命令
go mod tidy

根据项目代码,下载需要的依赖包,下载到$GOPATH/pkg/mod下面

vendor命令
go mod tidy

把当前项目需要的依赖包,拷贝到当前工程下,创建vendor文件夹
使用vendor库编译

go build --mod vendor -o 编译目标名字

你可能感兴趣的:(go工程管理)