本来导入到IDE中是一件很简单的事,然而,etcd项目结构的改变,却让我花费了一个上午没有搞成功.
主要用的语言不是Golang,所以碰到一个简单的问题也要琢磨许久.
这里用的IDE是Intellij IDEA Community Edition 2016.02 build.尝试过liteide,但是用不来,界面就看不惯,而且还没有vim插件,于是就用了Intellij IDEA了.
我的Intellij IDEA在之前已经升级到2017.02 build了,但是由于Golang插件在这个build上面不支持,只能重新下了一个2016.02 build的,来调试.
其实现在Jetbrains也已经有一个preview版的Golang IDE,上午捣鼓的时候下下来尝试了一下,感觉没什么问题,但是毕竟是preview版的,其中可能还有bug,而且现在又只是研究源码,又不是用Golang写代码,就用了Intellij IDEA.
如何导入?
点击Intellij IDEA的File->Open…,然后选择git clone下来的源码的src目录.
此时,打开任意一个go文件,你一定会看到无法找到包的错误.
点击Intellij IDEA的File->Setting,找到其中的Language & Framework下的Go子菜单,在右侧的面板中的Project libraries中,添加上git clone下来的源码的src目录.我的是/home/alstonwilliams/source_code/core_etcd/src
这样就可以找到src下面的源码了.但是,有的源码中,还用到了一些其他的包,用这种方式是找不到的.
比如,src/github.com/coreos/etcd/cmd/vendor/github.com/coreos下面有一个go-systemd,会被其他的源码使用到.但是却找不到.
如果我们直接在上面提到的Project libraries面板中,添加上项目根目录/src/github.com/coreos/etcd/cmd/vendor,是不行的,还是会找不到.
记得go 1.5之后,就提出了一种可以在vendor目录下寻找包的机制,但是我用的是go 1.8,不知为何却不好用.
最终是如何解决的呢?
在项目根目录/src/github.com/coreos/etcd/cmd/vendor下新建一个src目录,然后将项目根目录/src/github.com/coreos/etcd/cmd/vendor包中原本的那几个包拷贝到这个src目录中.
然后,在Project libraries面板中,添加上项目根目录/src/github.com/coreos/etcd/cmd/vendor.
这样就可以了.
etcd开发者在开发时,应该是启用了vendor的这一个特色的,如果在你的机器上,这一特色也是启用的,那就不用这么麻烦了.可惜我这里不知为何没有启动,就只能这么做了.
如果我早一些想起来,golang在查找包时,是在$GOPATH/src下面查找,也就不会花费这么长时间了.