所有文章

下载包到指定目录

在一个go项目中,通常会引很多第三方包,如果想要你的源码在任何地方都能被编译,那么需要将这些包放在项目的vendor目录下,可惜的是go get命令不能将包下载到指定的目录中去,这就需要先下载到$GOPATH/src/目录下,再手动铐到vendor下,这能忍吗?

这时有两种选,一种是使用govendor命令,但我不喜欢,它的运行本身会依赖一个配置文件,还需要我去记一些乱七八糟的命令,另一种思路是先创建一个空的临时的GOPATH目录,将需要的包用go get下载进入,然后将所有的包铐出来,可以写个简单的脚本来做。

假设我现在要下载一个golang包github.com/coreos/etcd/client到当前项目的vendor目录下,执行以下命令:

mkdir /tmp/go/{bin,pkg,src}
GOPATH=/tmp/go go get -v github.com/coreos/etcd/client
/bin/mv -rf /tmp/go/src/* vendor/
/bin/rm -rf /tmp/go

编写日期:2018-07-20