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