我正在开发多个微服务,它们需要不同的模块(这些模块应该像github上的模块一样可用,但是私有的(
我使用Go的第一次测试都位于一个包中,经过一段时间后,这个包变得相当混乱
我来自Java方面的编程,有很多包,可以保持内容的清晰和干净。
(这也适用于公共模块,如github.com/xyz/module1 github.com/xyz/module2 github.com/XY z/module3(
我只需要这个用于私人模块-我该怎么做?
这是我尝试过的:
我的go来源目录:
C:mypathtogosrc
在这个目录中,我有多个包含模块的子目录(实际上比这里列出的更多(
my-module1
my-module2
my-module3
对于每个文件夹,我都调用了go mod init
,但我收到的消息是
package my-module1/util is not in GOROOT (c:gosrcmy-module1util)
这显然是正确的,因为我的私人图书馆位于C:mypathtogosrc
使用go get ...
从github导入程序包工作正常(这些程序包将被加载但复制到c:gosrc
(
在一个文件夹中处理所有文件是可行的,但不是理想的解决方案(我需要创建多个微服务,因此我希望能够创建具有自定义可执行程序和/或测试的不同项目(
我做错了什么?
如果需要更多信息,我会提供——只要让我知道什么注意:package main
中没有go文件的程序包不能通过go install
安装。这个系统在我看来相当混乱——因为找不到模块。。。
最后我创建了一个多模块
意味着我有一个根文件夹(称之为root
(,其中包含一个go.mod
文件这定义了root
模块
它需要我所有的子模块并且它将绝对路径替换为相对路径。
root
* aa
* ab
* bc
main被定义为
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/aa