Go dependency management summary:
-
vgo
if your go version is: x >= go 1.11
-
dep
or vendor
if your go version is: go 1.6 >= x < go 1.11
- Manually if your go version is:
x < go 1.6
Edit 3: Go 1.11 has a feature vgo
which will replace dep
.
To use vgo
, see Modules documentation. TLDR below:
export GO111MODULE=on
go mod init
go mod vendor # if you have vendor/ folder, will automatically integrate
go build
This method creates a file called go.mod
in your projects directory. You can then build your project with go build
. If GO111MODULE=auto
is set, then your project cannot be in $GOPATH
.
Edit 2: The vendoring method is still valid and works without issue. vendor
is largely a manual process, because of this dep
and vgo
were created.
Edit 1: While my old way works it's not longer the "correct" way to do it. You should be using vendor capabilities, vgo
, or dep
(for now) that are enabled by default in Go 1.6; see. You basically add your "external" or "dependent" packages within a vendor
directory; upon compilation the compiler will use these packages first.
Found. I was able import local package with GOPATH
by creating a subfolder of package1
and then importing with import "./package1"
in binary1.go
and binary2.go
scripts like this :
binary1.go
...
import (
"./package1"
)
...
So my current directory structure looks like this:
myproject/
├── binary1.go
├── binary2.go
├── package1/
│ └── package1.go
└── package2.go
I should also note that relative paths (at least in go 1.5) also work; for example:
import "../packageX"