2 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
由于包之間的依賴問題,GOPATH 使用了符號(hào)鏈接。然而,GOPATH的結(jié)構(gòu)總是建議它用于多個(gè)項(xiàng)目,并且GOPATH
go 開發(fā)人員不鼓勵(lì)使用符號(hào)鏈接。
然而,在最新版本 (1.6) 中,他們最終確定了依賴問題的解決方案(在 1.5 中實(shí)驗(yàn)性引入),形式為vendor/
放置在包頂層的文件夾(鏈接)。此文件夾將在GOPATH
import 語句使用的常規(guī)包之前搜索。
有多種工具可用于簡(jiǎn)化依賴過程,例如godep或glide,使得使用vendor/
文件夾比符號(hào)鏈接GOPATH
. 使用供應(yīng)商包也比符號(hào)鏈接依賴項(xiàng)具有更好的可重現(xiàn)性,確保您的包適合所有人。
所以我鼓勵(lì)你不要符號(hào)鏈接你的 GOPATH,并使用這個(gè)新引入的標(biāo)準(zhǔn)。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
我最終做的是GOPATH
在一個(gè) go 項(xiàng)目中創(chuàng)建我自己的項(xiàng)目,我想與我的正常 global 保持隔離$GOPATH
。
我制作了一個(gè) ' b
' 腳本(在項(xiàng)目的根文件夾中),它:
檢查是否
src
存在(在項(xiàng)目文件夾中,在此處~/dev/git/project1
):如果不存在,則創(chuàng)建它;檢查 src/mypackage 是否存在:如果不存在,則創(chuàng)建符號(hào)鏈接
src/mypackage -> ~/dev/git/project1
。用別名調(diào)用:
alias b='. ./b'
這樣,相同的 ' b
'('build' 的縮寫)進(jìn)入~/dev/git/project1/src/mypackage
,并執(zhí)行go install
.
如果您有一個(gè)main
包,它將在~/dev/git/project1/bin
.
這樣,我的每個(gè) go 項(xiàng)目都保持自主,不會(huì)在我的正常$GOPATH/src
. 我$GOPATH
為幫助我在 go: 中開發(fā)的全球項(xiàng)目保留了 global golang.org/x/tools/cmd/...
,github.com/fzipp/gocyclo
以及類似的(其他短絨)。
換句話說,我沒有符號(hào)鏈接GOPATH
。
我將我的項(xiàng)目中的包符號(hào)鏈接到本地GOPATH
(所述項(xiàng)目的本地),但 GOPATH 本身是一個(gè)固定文件夾(再次特定于我的項(xiàng)目),像往常一樣定義,沒有任何符號(hào)鏈接)
這與用于供應(yīng)源依賴項(xiàng)的供應(yīng)商文件夾完全兼容。
alias b='. ./b'
cd /path/to/my/project
b:
#!/bin/sh
if [ ! -e src ]; then mkdir src ; fi
if [ ! -e src/myproject ]; then ln -s /path/to/my/project src/myproject; fi
cd src/myproject
go install
cd ../..
- 2 回答
- 0 關(guān)注
- 224 瀏覽
添加回答
舉報(bào)