我对Go中的包结构有疑问。我的src目录中有一个结构如下的项目:
- project
- proto_messages
- client
- clientcode.go
- server
- servercode.go
在我的客户端和服务器代码中,我使用如下导入:“ ../proto_messages”,它以我的詹金斯为基础构建,没有任何问题。问题是,我无法像这样开发-VS Code / Go出现以下错误:
unexpected directory layout:
import path: _/C_/Users/bob/Documents/go/src/prj_temp/proto_messages
root: C:\Users\bob\Documents\go\src
dir: C:\Users\bob\Documents\go\src\prj_temp\proto_messages
expand root: C:\Users\bob\Documents\go
expand dir: C:\Users\bob\Documents\go\src\prj_temp\proto_messages
separator: \
当我将import语句更改为“ prj_temp / proto_messages”时,它在本地工作,但是jenkins构建失败,因为它找不到proto_messages包。有什么想法吗?
问候 鲍勃
答案 0 :(得分:0)
import语句应该是src之后的路径,因此在这种情况下prj_temp/proto_messages
是正确的。
在jenkins上,请确保将代码复制到正确的文件夹中:$GOPATH/src/prj_temp
(无论gopath在jenkins上是什么)
此外,我建议您将项目嵌套到组织级别的目录中,以遵守约定。即使您没有计划将其推送到github存储库,我还是建议您将项目保留在本地C:\Users\bob\Documents\go\src\github.com\bob\someproject
并将所有导入更改为github.com/bob/someproject/proto_messages
。我认为当您开始获取第三方项目时,这将使事情变得更容易。
免责声明:答案基于我在发布go模块之前获得的知识。充分利用go模块时,上面的某些内容可能不再是必需的或不建议使用。