使用vendor管理Golang项目依赖
http://www.tuicool.com/articles/NjMzIbJ
我们在项目中除了大量的使用Python外,也大量的使用了Golang构建高效基础运行服务。在使用Golang过程中,我们发现Golang程序缺少依赖库版本功能是一个非常令人头大的问题:某些依赖在某个commit之后发生了API变更之后,如果不修改代码很难兼容,然而开发者之间很有可能因为参与的时间不同,导致执行 在之前,我们解决这个问题有两个方案,一种是拆解 在Golang1.5之后,Go提供了 在使用之前,需要安装一个辅助工具(如果Golang自改一个就好了): 下面,我们用一个例子来说明。首先有一个名为 package main import ( "github.com/yeeuu/echoic" ) func main() { e := echoic.New() e.SetDebug(true) e.Run("127.0.0.1:4321") } 执行一下命令就可以生成vendor文件夹: $ govendor init $ ls main.go vendor $ cd vendor/ $ ls vendor.json 这个 $ govendor add +external 如果需要更新或移除,可以参考一下工具的具体文档使用 $ ls github.com golang.org vendor.json $ cat vendor.json { "comment": "","ignore""test",68)">"package": [ { "path""github.com/yeeuu/echoic",68)">"revision""a7d6994f92e2dc60cff071ae38b204fbd4bd2a3f",68)">"revisionTime""2015-12-18T11:14:29+08:00" },{ "golang.org/x/net/context",68)">"1d9fd3b8333e891c0e7353e1adcfe8a612573033",68)">"2015-11-13T15:40:13-08:00" } ] } $ cd github.com/yeeuu/echoic $ ls LICENSE context.go group.go router.go README.md echoic.go response.go 通过设置环境变量 通过这种方式就可以保证程序能够实现类似Python中Virtualenv的模式,实现不同程序使用不同版本依赖的目的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |