我正在开发多个微服务,它们需要不同的模块(这些模块应该像github上的模块一样可用,但是是私有的)
我使用Go的第一个测试都位于一个包中,一段时间后,这个包会变得相当混乱
我来自Java编程方面--有大量的包--它们让事情变得清晰和整洁。
(这也适用于公共模块,如github.com/xyz/module1github.com/xyz/module2github.com/xyz/module3)
我只需要这个私有模块--我该怎么做呢?
这就是我尝试过的:
我的go源码目录:
C:\my\path\to\go\src\在这个目录中,我有多个包含模块的子目录(实际上比这里列出的要多)
my-module1
my-module2
my-module3对于每个文件夹,我调用了go mod init,但我收到的消息是
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安装。这个系统对我来说看起来相当混乱--因为找不到模块……
发布于 2020-11-26 20:10:11
最后,我创建了一个多模块
意味着我有一个根文件夹(让我们称之为root),其中包含一个定义root模块的go.mod文件
它需要我的所有子模块,并将绝对路径替换为相对路径。
root
* aa
* ab
* bcmain被定义为
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
)所有子模块都有一个非常简单的定义(只要您没有任何依赖项,这对所有模块都是一样的)
module root/aahttps://stackoverflow.com/questions/64988762
复制相似问题