奇怪的Go Vendor

有了ruby,现在无论写什么都想找跟ruby对应的工具,其中包管理器就是这样的.

ruby中有bundle 简单,强大,使用方便.

go在官方推荐了(https://github.com/golang/go/wiki/PackageManagementTools)

包管理器

依次点开之后,要么就是太复杂,要么就是用json配置,要么就是好久不更新了,最终权衡下来发现只有gom还比较符合bundle的习惯,又比较简单.于是开始用之.

首先我设置了

export GOPATH=$HOME/.golang
export PATH="$PATH:$GOPATH/bin

然后进入了我习惯放置代码的目录

cd $HOME/project/golang_project

给予测试优先,我要先找一个好用的测试库,于是找到了跟ruby社区最接近的(https://github.com/onsi/ginkgo)

ginkgo

编写了 Gomfile文件(Gemfile...一切都是那么熟悉)

gom 'github.com/onsi/ginkgo/ginkgo'
gom 'github.com/onsi/gomega'

然后随便编写了一个main程序 (main.go)

package main

import (
    . "github.com/onsi/ginkgo"
    . "github.com/onsi/gomega"

    "testing"
)

func main(t *testing.T) {
    RegisterFailHandler(Fail)
    RunSpecs(t, "TestGo Suite")
}

开心的运行

gom install

到此一切顺利,本来以为一切就是这么开心,没想到麻烦之处才刚刚开始

gom run main.go

就是无论如何也找不到前面gomfile依赖的包, 不过go还是很贴心的打出了寻找的路径,发现他说的错误是找不到 vendor/src/github.com/onsi/ginkgo/ginkgo 但是打开 vendor发现就是少了src这一层目录很奇怪,于是开始google,开始各种查,大家的文章都是写的 vendor目录到了1.7.3已经是默认支持的了,但是为什么就是不行呢.

很奇怪! 很奇怪!

来来回回一下午,中间还尝试的更换了各种包管理器程序最后都是不行.

最后无意间看到一篇文章 说要支持vendor,代码的目录必须在gopath src目录下,于是赶紧修改。

成功了.

但是内心却不快乐,为什么我的代码要和我安装的库放在一起,真的是tm的扯淡。

golang没有一个好的包管理器,真的很难再强大了。


推荐一下自己的项目

https://github.com/jimxl/rubygo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容