首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >微服务的Go模块

微服务的Go模块
EN

Stack Overflow用户
提问于 2020-11-24 22:40:03
回答 1查看 183关注 0票数 0

我正在开发多个微服务,它们需要不同的模块(这些模块应该像github上的模块一样可用,但是是私有的)

我使用Go的第一个测试都位于一个包中,一段时间后,这个包会变得相当混乱

我来自Java编程方面--有大量的包--它们让事情变得清晰和整洁。

(这也适用于公共模块,如github.com/xyz/module1github.com/xyz/module2github.com/xyz/module3)

我只需要这个私有模块--我该怎么做呢?

这就是我尝试过的:

我的go源码目录:

代码语言:javascript
复制
 C:\my\path\to\go\src\

在这个目录中,我有多个包含模块的子目录(实际上比这里列出的要多)

代码语言:javascript
复制
my-module1 
my-module2 
my-module3

对于每个文件夹,我调用了go mod init,但我收到的消息是

代码语言:javascript
复制
package my-module1/util is not in GOROOT (c:\go\src\my-module1\util)

这显然是正确的,因为我的私有库驻留在C:\my\path\to\go\src\

使用go get ...从github导入包没有问题(这些包将被加载,但会被复制到c:\go\src)

处理一个文件夹中的所有文件是可行的,但不是理想的解决方案(我需要创建多个微服务,因此我希望能够创建具有自定义可执行文件和/或测试的不同项目)

我做错了什么?

如果需要更多信息,我会提供的--只要让我知道注意事项:在package main中没有go文件的软件包不能通过go install安装。这个系统对我来说看起来相当混乱--因为找不到模块……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 20:10:11

最后,我创建了一个多模块

意味着我有一个根文件夹(让我们称之为root),其中包含一个定义root模块的go.mod文件

它需要我的所有子模块,并将绝对路径替换为相对路径。

代码语言:javascript
复制
root
 * aa
 * ab
 * bc

main被定义为

代码语言:javascript
复制
module root

go 1.15

require (
 root/aa v0.0.0
 root/ab v0.0.0
 root/bc v0.0.0
)

replace (
 root/aa => ./aa
 root/ab => ./ab
 root/bc => ./bc
)

所有子模块都有一个非常简单的定义(只要您没有任何依赖项,这对所有模块都是一样的)

代码语言:javascript
复制
module root/aa
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64988762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档