这是我的问题。我有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:package(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
可以找到它们,并且不希望它们成为"真实"软件包?
我在这里找到类似的东西,但这与vendor
文件夹无关。
感谢@jimb评论,我发现了以下内容:
最明显,最简单的解决方案只是
将您的依赖性保留在Gopath中,并通过版本控制,然后让Godep处理所有人(@jimb)
是的,这意味着向git和所有这些东西添加软件包。
如果您不想要/不能这样做,则行动顺序可以是:
- 代码
- 测试
- 从
vendor
删除您的本地依赖(软件包) - 运行
godep
以更新其他依赖性(例如httprouter
,libpq
等) - 手动将您的本地依赖性添加回
vendor
- 提交
但显而易见的是不是一个好方法。