同一项目中的多个模块 [英] Multiple modules within the same project

查看:9
本文介绍了同一项目中的多个模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在玩Go模块,我想知道就以下目录结构而言,最佳实践是什么:

project
├── go.mod
├── main.go
└── players
    ├── go.mod
    ├── players.go
    └── players_test.go

起初我在将players包导入到根项目时遇到问题,但我注意到我可以在根文件go.mod中执行此操作

module github.com/<name>/<project>

require (
    github.com/<name>/players v0.0.0
)

replace github.com/<name>/players => ./players

这样我就可以在main.go文件中执行import "github.com/<name>/players"操作。

现在,此方法起作用了,并且取自here,但我不确定这是正确的方法,还是此方法仅用于在本地包处于版本控制之外时临时更新它。

另一种选择似乎有点过分,那就是让每个模块都有自己的存储库?

TL;DR;-将多个模块放在同一个存储库中并将其导入其他模块/a根main.go文件的最佳实践方法是什么?

推荐答案

一般来说,模块应该是包的集合。

但您仍然可以创建单个包的模块。正如Volker所说,只有当您希望这些包有不同的生命周期时,这才有意义。当您想要从另一个项目导入这些模块并且不想要整个包集合的开销时,这也是有意义的。

大体:

模块是作为单个单元一起进行版本控制的相关围棋包的集合。

模块记录精确的依赖项要求并创建可重复生成。

最常见的情况是,版本控制存储库只包含一个在存储库根目录中定义的模块。(单个存储库中支持多个模块,但这通常会导致比每个存储库一个模块更多的持续工作)。

汇总存储库、模块和包之间的关系:

  1. 存储库包含一个或多个GO模块。 2.每个模块包含一个或多个GO包。 3.每个包由单个目录中的一个或多个GO源文件组成。

报价来源:https://github.com/golang/go/wiki/Modules#modules

回答问题:

您可以按照您在方法中展示的方式进行操作

这篇关于同一项目中的多个模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆