Managing Dependencies with Vendor in Go 1.6
Go 1.6 introduced vendor, a built-in mechanism for managing dependencies directly within projects. How do you utilize this feature effectively?
Understanding Vendor
With vendor, Go's lookup paths prioritize dependencies found within the ./vendor/ directory. This means that if a dependency is present in both ./vendor/ and $GOPATH/src/, the ./vendor/ version will be used.
Manual Vendor Usage
To use vendor manually, copy the dependency's files from $GOPATH/src/ into a corresponding path within the ./vendor/ directory, matching the original path. This will give tooling like go build and go run precedence to the ./vendor/ versions.
Dependency Management Tools
Instead of manual copying, consider using dependency management tools like Godep or Govendor. These tools automatically populate the ./vendor/ directory with dependencies found in your project by copying them from $GOPATH/src/.
Selective Vendor Usage
While dependency management tools have their merits, they can also lead to over-reliance. Instead of locking in dependencies, consider using vendor to manage specific problematic repositories while allowing others to update freely using go get -u.
Example
You have dependencies installed via the通常の $GOPATH/src/github method. To selectively vendor a single dependency, run:
mkdir -p $GOPATH/src/ou/vendor/github.com/zenazn/goji cp -r $GOPATH/src/github.com/zenazn/goji/ $GOPATH/src/ou/vendor/github.com/zenazn/goji
This copies the problematic dependency into ./vendor/ while leaving other dependencies to update freely.
The above is the detailed content of How Can I Effectively Manage Go Dependencies Using the `vendor` Mechanism in Go 1.6?. For more information, please follow other related articles on the PHP Chinese website!