【问题标题】:Vendoring in Go 1.6Go 1.6 中的供应商
【发布时间】:2016-06-30 04:05:42
【问题描述】:

我已经阅读了尽可能多的文档和 StackOverflow 文章,但我无法使用 Go 1.6 中的新供应商功能进行导入。

这是我与Goji 放在一起进行测试的示例项目。目录结构如下:

.
└── src
    ├── main.go
    └── vendor
        └── github.com
            └── zenazn
                └── goji
                    ├── LICENSE
                    ├── README.md
                    ├── bind
                    ├── default.go
                    ├── example
                    ├── goji.go
                    ├── graceful
                    ├── serve.go
                    ├── serve_appengine.go
                    └── web

而项目中唯一的文件main.go是这样的:

package main

import (
    "fmt"
    "net/http"

    "github.com/zenazn/goji"
    "github.com/zenazn/goji/web"
)

func hello(c web.C, w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, %s!", c.URLParams["name"])
}

func main() {
    goji.Get("/hello/:name", hello)
    goji.Serve()
}

我的环境变量是这样的:

export GOPATH=~/.go
export GOBIN=$GOPATH/bin
export PATH=$PATH:/usr/local/opt/go/libexec/bin:$GOBIN

我尝试了最简单的构建命令,但没有成功:

go run ./src/main.go
go build ./src/main.go

我也尝试过构建:

$GOPATH=`pwd`

...无济于事。我完全错过了什么吗?任何建议表示赞赏。

【问题讨论】:

  • src下的整个分支应该在一个子目录下吧?您可以尝试创建一个目录“foo”并将main.govender 移动到它下面吗?
  • 能否请您发布您尝试过的确切命令以及收到的错误消息?
  • @kostya 已编辑以添加构建命令。
  • @sberry 不走运。但是供应商只针对图书馆吗?

标签: go vendor


【解决方案1】:

我建议你阅读https://golang.org/doc/code.html。它需要一两天的时间来消化,但是在您了解 go 工具如何使用源代码和 GOPATH 之后,使用它们真的很容易。

回到你的问题。要构建一个简单的 Go 程序,您需要:

  • 在 $GOPATH/src 下创建目录,例如mkdir $GOPATH/src/myprogram
  • 把所有的源代码(包括供应商目录)放在那里:$GOPATH/src/myprogram/main.go$GOPATH/src/myprogram/vendor
  • 运行go install myprogram 来构建您的应用程序并将生成的myprogram 二进制文件放入$GOPATH/bin/myprogram

【讨论】:

  • 非常感谢@kostya;你为我解决了。我需要做两件事:正确设置$GOPATH,并将项目移动到./src 下的子目录。
  • 将项目移动到src/ 为我做了这件事
猜你喜欢
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 2016-09-12
相关资源
最近更新 更多