介绍

不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的MavenGradle Golang亦有godepgovendorglidegvtgopack等等,本文主要给大家介绍gilde glideGolang的包管理工具,是为了解决Golang依赖问题的。

安装

Golang环境设置

Golang 1.5版本后才采用vendor目录特性。

//设置环境变量使用vendor目录
GO15VENDOREXPERIMENT=1

安装glide

$ go get github.com/Masterminds/glide
$ go install github.com/Masterminds/glide

验证

$ glide
NAME:
   glide -Vendor Package Management for your Go projects.

   Each projectshould have a 'glide.yaml' file in the project directory. Files
   looksomething like this:

       package:github.com/Masterminds/glide
       imports:
       -package: github.com/Masterminds/cookoo
        version: 1.1.0
       -package: github.com/kylelemons/go-gypsy
        subpackages:
         - yaml

   For moredetails on the 'glide.yaml' files see the documentation at
  https://glide.sh/docs/glide.yaml


USAGE:
   glide [globaloptions] command [command options] [arguments...]

VERSION:
   0.13.0-dev

COMMANDS:
     create,init       Initialize a new project,creating a glide.yaml file
    config-wizard, cw  Wizard thatmakes optional suggestions to improve config in a glide.yaml file.
     get                Install one or more packagesinto `vendor/` and add dependency to glide.yaml.
     remove,rm         Remove a package from theglide.yaml file, and regenerate the lock file.
     import             Import files from other dependencymanagement systems.
     name               Print the name of this project.
     novendor,nv       List all non-vendor paths in adirectory.
    rebuild            Rebuild ('gobuild') the dependencies
     install,i         Install a project'sdependencies
     update,up         Update a project'sdependencies
     tree               (Deprecated) Tree prints thedependencies of this project as a tree.
     list               List prints all dependenciesthat the present code references.
     info               Info prints information aboutthis project
    cache-clear, cc    Clears theGlide cache.
     about              Learn about Glide
     mirror             Manage mirrors
     help,h            Shows a list of commands orhelp for one command

GLOBAL OPTIONS:
   --yaml value,-y value  Set a YAML configuration file.(default: "glide.yaml")
   --quiet,-q             Quiet (no info or debugmessages)
   --debug                 Print debug verboseinformational messages
   --homevalue            The location of Glidefiles (default: "/home/users/qiangmzsx/.glide") [$GLIDE_HOME]
   --tmpvalue             The temp directory touse. Defaults to systems temp [$GLIDE_TMP]
  --no-color              Turn offcolored output for log messages
   --help,-h              show help
   --version,-v           print the version

看到这样,那就恭喜你,已经安装成功了!!!

使用

篇幅有限,我只介绍经常使用到的。先进入在GOPATH的一个项目中。

cd  $GOPATH/src/foor

初始化 (glide init)

$ glide init
[INFO] Generating a YAML configuration file and guessing the dependencies
[INFO] Attempting to import from other package managers (use --skip-import toskip)
[INFO]  Scanningcode to look for dependencies
[INFO]  -->Found reference to github.com/urfave/cli
[INFO]  Writingconfiguration file (glide.yaml)
[INFO]  Wouldyou like Glide to help you find ways to improve your glide.yaml configuration?
[INFO]  If youwant to revisit this step you can use the config-wizard command at any time.
[INFO]  Yes (Y)or No (N)?
Y
[INFO]  Loadingmirrors from mirrors.yaml file
[INFO]  Lookingfor dependencies to make suggestions on
[INFO]  -->Scanning for dependencies not using version ranges
[INFO]  -->Scanning for dependencies using commit ids
[INFO] Gathering information on each dependency
[INFO]  -->This may take a moment. Especially on a codebase with many dependencies
[INFO]  -->Gathering release information for dependencies
[INFO]  -->Looking for dependency imports where versions are commit ids
[INFO]  Here aresome suggestions...
[INFO]  Thepackage github.com/urfave/cli appears to have Semantic Version releases(http://semver.org).
[INFO]  Thelatest release is v1.19.1. You are currently not using a release. Would youlike
[INFO]  to usethis release? Yes (Y) or No (N)
Y
[INFO]  Wouldyou like to remember the previous decision and apply it to future
[INFO] dependencies? Yes (Y) or No (N)
Y
[INFO]  Updatinggithub.com/urfave/cli to use