我的项目结构方式类似于以下内容
/workspace
/src
/package1
/vendor
/src
/somepackage
/anotherpackage
/package1
我的GOPATH设置为 /workspace;/workspace/vendor
请注意,这不是使用go 1.5供应商选项 .
到目前为止,所有内容都在构建/开发工作流程中进行编译和工作 . 我现在处于一种情况,我想将库导入供应商目录workspace / vendor / src / package1,但在workspace / src / package1目录中编写一些单元测试 .
当测试运行时,它无法从供应商目录中的package1中找到方法 .
有没有办法让供应商包代码被识别到同一个名称空间中?
2 回答
您是否要求在两个不同的gopath中的两个文件夹之间基本上“拆分”包的代码? go工具无法执行此操作,因为它会在gopath中的任何文件夹中找到它找到的第一个文件夹 . 如果你正在积极研究一个项目,为什么它会进入供应商的gopath而不是src呢?
正因为这样的区别,我通常会推荐一个gopath用于一切 . 如果您想要供应商依赖项,我建议您为每个单独的主程序包执行此操作 .
正如captncraig所说:go工具无法做到这一点 .
但是你可以自由地在你想要的任何文件集上调用go编译器:
go tool compile <file.go>...
当然这会重新引入某种Makefile风格的构建系统 . 这是可行的,但由
go build
或go install
完成的所有繁重工作都将丢失,并且必须存在于您的Makefile中 .