【问题标题】:How to specify install dependencies for go get如何为 go get 指定安装依赖项
【发布时间】:2016-05-25 14:09:36
【问题描述】:

我可以通过导入检查我的项目后指定要由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 generateing)这个项目,go-bindata 必须安装。是否可以指定安装依赖项?

【问题讨论】:

    标签: go dependency-management


    【解决方案1】:

    回答你的问题:不。

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

    但对于何时以及为何运行 go generate 可能存在一些混淆:go generate(据我了解)的预期用途是用于包或命令作者在运行期间生成代码发展阶段。由go {build,install,get}“正常”签入和处理的代码。所以运行go generate,检查生成的东西和你的包的用户go get它,然后运行go generate。他们不需要,代码在geting 期间以正确的签入版本出现。

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

    【讨论】:

    • 这不是意味着将所有资产都拥有两次,一次编码一次,一次是原始的吗?
    【解决方案2】:

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

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

    您将在 JSON 文件中拥有您的依赖项,就像 Node、Bower 等一样...使用起来非常简单。

    在你的情况下,假设你已经有 go geted 包,运行:

    godep save
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2016-08-23
      • 2014-08-23
      • 2018-11-13
      相关资源
      最近更新 更多