【发布时间】:2014-11-14 23:25:34
【问题描述】:
我有一个里面有包的项目:
- 项目包“root”:
a/b/c(例如github/b/c) - 在
a/b/c我们有很多包(p1,p2 ...) - 项目按照How to Write Go Code官方推荐进行管理。本地项目路径为:
$GOPATH/src/a/b/c。此外,所有导入都“不是相对的”。 - 该项目具有 go get-able 依赖项
现在我想使用一些依赖管理工具,例如 gom 或 godep。这个工具中的每一个都会在存储库中创建一个额外的目录,并将所有供应商依赖项放在那里。它还使用GOPATH 并将其设置为该供应商目录。假设该工具会将所有供应商放入path_to_project/.vendor - 成为新的GOPATH。
我想使用其中一种 go 工具(gofmt、gorename、...)来了解我的项目和供应商目录中的包。问题是如果GOPATH=path_to_project/.vendor(godep 这样做)那么工具不知道我项目中的包。
对此的一个想法是在外壳端编辑器中设置GOPATH=path_to_project/.vendor:GOPATH。或者用gom exec调用每个命令(gom在上面的命题中设置了一个GOPATH)
有没有现成的自动解决方案?
最终目标是将 go 项目与指定的依赖版本(如 git 提交)捆绑在一起,并使工具 + 编辑器 (vim/emacs) 与这些工具一起使用。
【问题讨论】:
-
我使用 godep 并且只是更新我的 GOPATH。
GOPATH=`godep path`:$GOPATH
标签: vim emacs go dependency-management