为了账号安全,请及时绑定邮箱和手机立即绑定

符号链接到 GOPATH 文件夹是常见的做法吗?

符号链接到 GOPATH 文件夹是常见的做法吗?

Go
眼眸繁星 2022-01-04 13:35:08
我的 git 项目存储在这里:~/dev/git/project1 ...我正在启动一个 golang 项目,因为它需要使用 GOPATH,所以从我的项目 git 路径到 GOPATH 创建符号链接是一种常见的做法吗?
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

由于包之间的依赖问题,GOPATH 使用了符号链接。然而,GOPATH的结构总是建议它用于多个项目,并且GOPATHgo 开发人员不鼓励使用符号链接。

然而,在最新版本 (1.6) 中,他们最终确定了依赖问题的解决方案(在 1.5 中实验性引入),形式为vendor/放置在包顶层的文件夹(链接)。此文件夹将在GOPATHimport 语句使用的常规包之前搜索。

有多种工具可用于简化依赖过程,例如godepglide,使得使用vendor/文件夹比符号链接GOPATH. 使用供应商包也比符号链接依赖项具有更好的可重现性,确保您的包适合所有人。

所以我鼓励你不要符号链接你的 GOPATH,并使用这个新引入的标准。


查看完整回答
反对 回复 2022-01-04
?
ITMISS

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 ../..


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号