这是我的问题。 我有go-app,它使用我自己创建的一些自定义包。 我不想在git或其他地方发布这个软件包。 他们只是具有某些功能的包裹。
所以,我的项目文件夹如下所示:
|--src/github/u-mulder
|--/project_name
|--/Godeps
|--/public
|--/vendor
|--main.go
|--Procfile
我将我的包裹放到vendor
文件夹:
-/Godeps
-/public
-/vendor
|---/github.com/u-mulder/package_one/package_one.go
|---/github.com/u-mulder/package_two/package_two.go
-main.go
-Procfile
好的,在我的main.go
我成功导入了这个包:
import (
"database/sql"
"fmt"
"github.com/u-mulder/package_one"
"github.com/u-mulder/package_two"
// more packages here
)
一切正常。
现在我想准备我的项目,使用godep
部署到heroku。
所以,在我的项目的根文件夹中,我运行
> godep save ./...
这就是我的问题 - 因为我的包已经在vendor
文件夹中,我收到错误:
godep:找不到包(github.com/u-mulder/package_one)
当然,我可以为每个包创建一个项目。然后src
的结构将如下所示:
|--src/github/u-mulder
|--/package_one
|-package_one.go
|--/package_two
|-package_two.go
|--/project_name
|--/Godeps
|--/public
|--/vendor
|--main.go
|--Procfile
然后上面提到的问题消失了,但第二个问题出现了:
godep:检查
"$GOPATH/src/github.com/u-mulder/package_one"
时出错:目录"$GOPATH/src/github.com/u-mulder/package_one"
未使用已知的版本控制系统
所以,当然我可以在每个项目包中创建一个.git
存储库(也许这个问题就会消失),但我不想要,这些只是本地包,仅供我使用。
所以,问题是 - 在哪里放置我的自定义(或说 - 本地)软件包,godep
可以找到它们,并且不希望它们是真实的"包?
我发现here类似的内容,但它不是vendor
文件夹。
答案 0 :(得分:1)
感谢@JimB的评论,我发现了以下内容:
最明显和最简单的解决方案就是
使用版本控制将您的依赖关系保存在GOPATH中,然后让godep全部处理它们(@JimB)
所以是的,这意味着将软件包添加到git和所有这些东西。
如果您不想/不能这样做,行动的顺序可以是:
vendor
godep
更新其他家属(例如httprouter
,libpq
等)vendor
但是很明显,不是一种好方法。