go的依赖包管理

作者: 李佶澳   转载请保留:原文地址   更新时间:2017/10/28 12:37:51

说明

Golang可以自由地引用Git仓库中的代码,这样就带来了依赖包版本管理的问题。

go get 设置代理

HTTP_PROXY=127.0.0.1:53100 HTTPS_PROXY=127.0.0.1:53100 go get golang.org/x/text

Godep

早期Golang本身没有提供依赖包管理的功能,可以通过一个独立的Godep工具进行管理。

通过以下命令,可以直接保存项目引用的第三方代码以及版本信息:

godep save          #保存当前目录下的go文件(不遍历子目录)引用的第三方代码
godep save ./...    #保存当前目录以及子目录下的go文件引用的第三方代码

在Golang 1.5之前,Godep将版本信息和第三方代码保存的Godeps目录下。

在Golang 1.5以后,Godep将版本信息保存在Godeps目录中,将第三方代码保存在vendor目录。

vendor

vendor是1.5中的一个试验特性,在1.6版本中被正式引入。编译过程中,会先引用vendor目录中的代码。

对于同样的代码main.go:

package main

import (
    "github.com/lijiaocn/GoPkgs/version"
)

func main() {
    version.Show()
}

没有vendor之前,项目vendor_test目录结构如下:

▾ vendor_test/
  ▾ main/
      main.go

main.go中引用的是$GOPATH/github.com/lijiaocn/GoPkgs/version中的文件。

使用vendor之后,目录结构如下:

▾ vendor_test/
  ▸ Godeps/
  ▾ main/
      main.go
  ▾ vendor/
    ▾ github.com/
      ▾ lijiaocn/
        ▾ GoPkgs/
          ▸ version/
            LICENSE

main.go中引用的是vendor/github.com/lijiaocn/GoPkgs/version中的文件。

不需要对main.go做任何修改。

参考

  1. golang vendor directory
  2. Godep
  3. Go 1.5 Vendor Experiment
  4. golang cmd

本文原创首发于网站:www.lijiaocn.com

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作 友情链接: lijiaocn github.com