命令 - go get
[go get]
: go 中获取依赖包都是通过执行go get命令
// 通过解析代码中的import语句, 去下载相应的源代码到$GOPATH/src下,
// 然后再进行install, 安装在$GOPATH/pkg下
: go get的问题是没有版本上的控制
// 由于所有的依赖项必须在$GOPATH下有对应的源码和.a文件, 所以在同一台机上的不同项目,没法使用同一依赖项的不同版本
: go 1.5开始官方引入了go vendor机制
// 在原来的project目录下加一个vendor文件夹, 源码都“照搬”到这里, 目录结构不动
// 所有import优先使用vendor中的源码
[依赖解决工具]
: govendor https://golang.org/cmd/go/#hdr-Vendor_Directories
: dep
// https://github.com/golang/dep
// https://golang.github.io/dep/
: godep
// https://github.com/tools/godep
// https://www.iteye.com/blog/wiselyman-2171562
// 语义版本 https://semver.org/
[dep]
: Golang的官方依赖工具,用来管理和下载工程依赖的工
# 项目目录初始化
: dep init
// vendor # current project的远程依赖的源代码
// Gopkg.toml 项目依赖记录文件
// - 记录着current project依赖项project的约束
// Gopkg.lock
# 添加新的依赖项
: dep ensure add github.com/RoaringBitmap/roaring@^1.0.1
-- Gopkg.toml
// 添加依赖项
[[constraint]]
name = "github.com/apodemakeles/ugo"
version = "=0.1.0"
# 根据依赖内容下载编译依赖
: dep ensure
// dep中要结合toml和代码中的import语句, 才会真的下载, 编译依赖项
--main.go
package main
import (
"fmt"
"github.com/apodemakeles/ugo/time"
)
func main() {
fmt.Println(utime.NowUnixTS())
}
[godep]
# 安装
: go get github.com/tools/godep
# 将项目纳入Godep管理
: godep save
[glide]
[vgo]
: GO 官方依赖工具 (新版本 go^1.11)
: go get -u golang.org/x/vgo
[govendor]
$ godep help
Godep is a tool for managing Go package dependencies.
Usage:
godep command [arguments]
The commands are:
save list and copy dependencies into Godeps
go run the go tool with saved dependencies
get download and install packages with specified dependencies
path print GOPATH for dependency code
restore check out listed dependency versions in GOPATH
update update selected packages or the go version
diff shows the diff between current and previously saved set of dependencies
version show version info
Use "godep help [command]" for more information about a command.