英文:
How to do a Go project workspace to work with dependencies tools and go tools?
问题
我有一个包含多个包的项目:
- 项目包 "root":
a/b/c
(例如 github/b/c) - 在
a/b/c
中,我们有很多包(p1、p2...) - 项目按照如何编写 Go 代码的官方建议进行管理。本地项目路径为:
$GOPATH/src/a/b/c
。同时,所有导入都是"非相对"的。 - 该项目有可通过 go get 获取的依赖项
现在我想使用一些依赖管理工具,比如 gom 或 godep。这些工具中的每一个都会在存储库中创建一个额外的目录,并将所有供应商依赖项放在那里。它们还会操作 GOPATH
并将其设置为该供应商目录。假设该工具将所有供应商放在 path_to_project/.vendor
中,成为一个新的 GOPATH
。
我想要使用其中一个 Go 工具(gofmt
、gorename
等),并了解我的项目和供应商目录中的包。问题是,如果 GOPATH=path_to_project/.vendor
(godep 这样做),那么这些工具就无法识别我的项目中的包。
对此的一个想法是在 shell 和编辑器中设置 GOPATH=path_to_project/.vendor:GOPATH
。或者使用 gom exec
调用每个命令(gom 在上述命题中设置了 GOPATH)。
是否有现成的自动解决方案?
最终目标是将 Go 项目与指定的依赖项版本(如 git 提交)捆绑在一起,并使工具和编辑器(vim/emacs)与这些工具一起使用。
英文:
I have a project with packages inside:
- project package "root":
a/b/c
(eg github/b/c) - in
a/b/c
we have a lot of packages (p1, p2 ...) - project is managed according to How to Write Go Code official recommendations. The local project path is:
$GOPATH/src/a/b/c
. Also all imports are "not relative". - the project has go get-able dependencies
Now I want to use some dependency manager tool like gom or godep. Each of this tool creates an extra directory in repository and puts all vendor dependencies there. Also it plays with GOPATH
and sets it to that vendor directory. Let's assume that the tool will put all vendors in path_to_project/.vendor
- becoming a new GOPATH
.
I want to use one of the go tools (gofmt
, gorename
, ...) being aware about packages in my projects and vendor directory. The problem is that if GOPATH=path_to_project/.vendor
(godep does this) then tools are not aware about packages in my project.
One idea for this is to set a GOPATH=path_to_project/.vendor:GOPATH
in a shell end editors. Or call every command with gom exec
(gom sets a GOPATH in the above proposition)
Is there any ready and automatic solution for this?
Final goal is to bundle go project with specified dependencies versions (like git commits) and make tools + editors (vim/emacs) working with this tools.
答案1
得分: 0
如果你正在使用godep,你可以在go命令前加上godep前缀,像这样:
godep go build
或者
godep go fmt
英文:
If you are using godep, you can just prefix the go command with godep like this:
godep go build
or
godep go fmt
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论