参照官方的方式下载安装完godep后,做了一个测试目录,测试目录结构如下:
godeptest |- main.go
main.go内容如下:
package main import ( "gopkg.in/mgo.v2" ) func main() { }
我琢磨着在项目目录下使用godep save命令,应当就会自动在当前目录下生成Godeps目录,并且把labix.org/v2/mgo这个库拷贝到其中的_workspace目录下。
$ godep save -r ./...
没有输出提示信息,应该是成功了,查看下目录信息

godep测试目录结构
有生成Godeps目录,但是_workspace下并没有项目库文件,好奇怪啊,也没有报错。
google搜索了下godeps save not work,没有找到有价值的信息,于是去翻了下源码,看到save这个有help信息,可以用-d, -v打印出相应的调试信息。
$ godep save -r -d -v ./... 这里会输出一堆调试信息...
仔细看了这些信息,发现有一个Done Looking For Package的调试信息,从调试信息来看是在源码文件中没有找到对应的依赖库,也就是上面的labix.org/v2/mgo没有被找到,没有找到自然不会自动去拷贝,也没有报错信息。Godeps.json的内容就是这样:
{ "ImportPath": ".", "GoVersion": "go1.5", "Packages": [ "./..." ], "Deps": [] }
太蛋疼了,这个是啥子问题呢!各种搜索引擎乱翻,看到一篇关于godep save版本库没有设置的问题:
godep: directory "/Users/tony/Test/GoToolsProjects/src" is not using a known version control system godep: error loading dependencies
我依照该篇文章去测试,一切目录命名都是照搬,发现解决了版本库问题后居然就可以了。
我仔细对比了前面自己的方式和该篇的方式区别,发现该篇文章是的目录是在GOPATH的src目录下,而我前面测试的目录是在自己的code代码里,不在GOPATH的src下。想到这里我立马进行了测试,我把前面的测试目录拷贝到GOPATH的src下,再次执行godep save -r ./…就可以了。
最后总结一下这个问题是由于代码目录没有在GOPATH/src目录下造成的。
这个好大的一坑啊,我自己的习惯是GOPATH的目录只用来存放go get的代码库。其它的开发项目都是放在不同的目录下。这个不知道算不算是godep的一个bug呢?
参考文章:godep的一个“坑”
转载请注明:快乐编程 » golang包管理工具godep save无效的坑