如何为go get

时间:2016-05-24 22:22:22

标签: go dependency-management

我可以通过导入项目签出项目后指定go get下载的依赖项。我甚至可以通过导入副作用来强制下载未在代码中使用的软件包:

import _ "github.com/jteeuwen/go-bindata"

此外,在shell上我可以通过在路径后面使用省略号来安装程序go get

$ go get github.com/jteeuwen/go-bindata/...

但是,我似乎无法将两种技术结合起来:

import _ "github.com/jteeuwen/go-bindata/..."

$ go get
main.go:9:8: open c:\gopath\src\github.com\jteeuwen\go-bindata\...: Access denied

我想告诉go get要构建(实际go generate)此项目,go-bindata必须安装。是否可以指定安装依赖性?

2 个答案:

答案 0 :(得分:1)

回答你的问题:不。

但是您可以将go-bindata供应给您的项目,这将在go get项目之后使其可用。

但是对于运行go generate的时间和原因可能存在轻微的混淆:go generate的预期用途(据我理解)是用于包或命令 authors 在开发阶段生成代码。由go {build,install,get}“正常”签入和处理的代码。所以运行go generate,检查生成的内容和您的软件包go get的用户,然后运行go generate。他们不需要,代码在get期间出现在正确的签入版本中。

对于最终用户必须执行的更复杂的构建:使用Makefile或类似工具,因为这些内容超出了go get的范围。

答案 1 :(得分:0)

在我的一个项目中,我使用Godep。根据其页面:

  

此工具假定您在标准Go工作区中工作,如   在http://golang.org/doc/code.html中描述。我们希望godep能够建立起来   在Go 1.4 *或更高版本上,但您可以在任何可用的项目上使用它   转1或更新。

您将依赖于JSON文件,就像Node,Bower等...它很容易使用。

在您的情况下,假设您已经go get编辑了包,请运行:

godep save

这将生成包含所有其他依赖项的JSON文件,并保存到项目中的文件夹中。多亏了它,我能够交叉编译我的项目。