本來導入到IDE中是一件很簡單的事,然而豫领,etcd項目結(jié)構(gòu)的改變,卻讓我花費了一個上午沒有搞成功.
主要用的語言不是Golang,所以碰到一個簡單的問題也要琢磨許久.
這里用的IDE是Intellij IDEA Community Edition 2016.02 build.嘗試過liteide早处,但是用不來,界面就看不慣瘫析,而且還沒有vim插件砌梆,于是就用了Intellij IDEA了.
我的Intellij IDEA在之前已經(jīng)升級到2017.02 build了,但是由于Golang插件在這個build上面不支持贬循,只能重新下了一個2016.02 build的咸包,來調(diào)試.
其實現(xiàn)在Jetbrains也已經(jīng)有一個preview版的Golang IDE,上午搗鼓的時候下下來嘗試了一下杖虾,感覺沒什么問題烂瘫,但是畢竟是preview版的,其中可能還有bug奇适,而且現(xiàn)在又只是研究源碼坟比,又不是用Golang寫代碼,就用了Intellij IDEA.
如何導入嚷往?
點擊Intellij IDEA的File->Open...葛账,然后選擇git clone下來的源碼的src目錄.
此時,打開任意一個go文件间影,你一定會看到無法找到包的錯誤.
點擊Intellij IDEA的File->Setting注竿,找到其中的Language & Framework下的Go子菜單,在右側(cè)的面板中的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開發(fā)者在開發(fā)時矮冬,應該是啟用了vendor的這一個特色的谈宛,如果在你的機器上,這一特色也是啟用的胎署,那就不用這么麻煩了.可惜我這里不知為何沒有啟動吆录,就只能這么做了.
如果我早一些想起來,golang在查找包時琼牧,是在$GOPATH/src下面查找恢筝,也就不會花費這么長時間了.