从同一个项目中导入包

时间:2019-11-19 00:16:31

标签: go

我对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包。有什么想法吗?

问候 鲍勃

1 个答案:

答案 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模块时,上面的某些内容可能不再是必需的或不建议使用。