我可以通过导入项目签出项目后指定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
必须安装。是否可以指定安装依赖性?
答案 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文件,并保存到项目中的文件夹中。多亏了它,我能够交叉编译我的项目。