Go依赖管理总结:
-
vgo
如果你的版本是:x >= go 1.11
-
dep
or vendor
如果你的版本是:go 1.6 >= x < go 1.11
- 手动如果你的版本是:
x < go 1.6
编辑3:Go 1.11有一个功能vgo
这将replace https://github.com/golang/go/wiki/vgo#current-state dep
.
To use vgo
, see Modules https://github.com/golang/go/wiki/Modules文档。 TLDR如下:
export GO111MODULE=on
go mod init
go mod vendor # if you have vendor/ folder, will automatically integrate
go build
该方法创建一个名为go.mod
在您的项目目录中。然后您可以使用以下命令构建您的项目go build
. If GO111MODULE=auto
设置了,那么你的项目就不能在$GOPATH
.
编辑 2:供应商方法仍然有效并且没有问题。vendor
很大程度上是一个手动过程,因此dep
and vgo
被创造。
编辑1:虽然我的旧方法有效,但它不再是“正确”的方法。你应该使用vendor能力,vgo
, or dep
(目前)在 Go 1.6 中默认启用;。您基本上将“外部”或“依赖”包添加到vendor
目录;编译时,编译器将首先使用这些包。
成立。我可以导入本地包GOPATH
通过创建子文件夹package1
然后导入import "./package1"
in binary1.go
and binary2.go
像这样的脚本:
二进制1.go
...
import (
"./package1"
)
...
所以我当前的目录结构如下所示:
myproject/
├── binary1.go
├── binary2.go
├── package1/
│ └── package1.go
└── package2.go
我还应该注意到相对路径(至少在 go 1.5 中)也可以工作;例如:
import "../packageX"