Skip to content

dependencies manage

cym edited this page Jan 15, 2018 · 1 revision

Go 的工程管理

目录结构

采用一个公共$GOPATH,在 $GOPATH/src/下放不同的项目:

| - $GOPATH  
	| - bin
	| - pkg
	| - src
		| - [project-name1]
			| - main.go
		| - [project-name1]
			| - main.go

Go 版本管理

使用 gvm 进行不同 Go 版本的管理

  • gvm 的安装,安装到 bashzsh

     $ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
    
  • 使用:

     # 安装某版本的 go
     $ gvm install go1.4
     
     # 使用某版本的 go
     $ gvm use go1.4 [--default]
     
     # 查看本机的 go 版本
     $ gvm list
     

依赖包管理

  • 使用 dep 来管理依赖包

      | - $GOPATH  
      	| - bin
      		| - ...
      	| - pkg
       		| - ...
      	| - src
      		| - [project-name1]
      			| - Gopkg.lock
      			| - Gopkg.toml
      			| - main.go
      			| - vendor
      				| - github.com
      					| - ...
      				| - gopkg.in
      					| - ...
      				| - ...
      		| - ...
    
  • 安装dep:

     $ brew install dep
    
  • dep需要在$GOPATH/src[/project-name]下使用

  • 初始化命令:

     $ dep init
    

    自动分析并下载依赖,生成三个文件.Gopkg.toml可以通过命令生产,也可以被用户根据 需要手动修改,Gopkg.lock是自动生成的,不可以修改。

       | - vendor #用来存放依赖包的目录
       | - Gopkg.lock #描述用户的意图,包括依赖的 source、branch、version等。
       | - Gopkg.toml #仅仅描述依赖的具体状态。例如各依赖的revision。
    
  • 根据Gopkg.tomlGopkg.lock中的数据构建vendor目录和同步里面的包:

     $ dep ensure
    
  • 查看当前的依赖情况:

     $ dep status
     PROJECT               CONSTRAINT     VERSION        REVISION  LATEST   PKGS USED
     github.com/beego/mux  branch master  branch master  626af65   626af65  1
     go.uber.org/atomic    *              v1.2.0         4e33664   4e33664  1
     go.uber.org/zap       ^1.4.0         v1.4.0         fab4530   fab4530  7
    

参考:

  1. Golang依赖管理工具:Dep

  2. 初窥dep

Clone this wiki locally