2 回答

TA贡献1786条经验 获得超11个赞
由于包之间的依赖问题,GOPATH 使用了符号链接。然而,GOPATH的结构总是建议它用于多个项目,并且GOPATH
go 开发人员不鼓励使用符号链接。
然而,在最新版本 (1.6) 中,他们最终确定了依赖问题的解决方案(在 1.5 中实验性引入),形式为vendor/
放置在包顶层的文件夹(链接)。此文件夹将在GOPATH
import 语句使用的常规包之前搜索。
有多种工具可用于简化依赖过程,例如godep或glide,使得使用vendor/
文件夹比符号链接GOPATH
. 使用供应商包也比符号链接依赖项具有更好的可重现性,确保您的包适合所有人。
所以我鼓励你不要符号链接你的 GOPATH,并使用这个新引入的标准。

TA贡献1871条经验 获得超8个赞
我最终做的是GOPATH
在一个 go 项目中创建我自己的项目,我想与我的正常 global 保持隔离$GOPATH
。
我制作了一个 ' b
' 脚本(在项目的根文件夹中),它:
检查是否
src
存在(在项目文件夹中,在此处~/dev/git/project1
):如果不存在,则创建它;检查 src/mypackage 是否存在:如果不存在,则创建符号链接
src/mypackage -> ~/dev/git/project1
。用别名调用:
alias b='. ./b'
这样,相同的 ' b
'('build' 的缩写)进入~/dev/git/project1/src/mypackage
,并执行go install
.
如果您有一个main
包,它将在~/dev/git/project1/bin
.
这样,我的每个 go 项目都保持自主,不会在我的正常$GOPATH/src
. 我$GOPATH
为帮助我在 go: 中开发的全球项目保留了 global golang.org/x/tools/cmd/...
,github.com/fzipp/gocyclo
以及类似的(其他短绒)。
换句话说,我没有符号链接GOPATH
。
我将我的项目中的包符号链接到本地GOPATH
(所述项目的本地),但 GOPATH 本身是一个固定文件夹(再次特定于我的项目),像往常一样定义,没有任何符号链接)
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 关注
- 240 浏览
添加回答
举报