我对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包。有任何想法吗?
问候鲍勃
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模块时,可能不再需要或不建议使用上述某些方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句