php小编鱼仔在这里给大家分享一个有关Go语言的问题:“如何将工作区作为依赖项导入到另一个Go存储库中?”在Go语言开发中,依赖项管理是一个常见的问题。有时候,我们可能需要将一个工作区作为依赖项导入到另一个存储库中,以便在项目中使用。在本文中,我将为您详细介绍如何实现这个目标,以帮助您更好地管理Go语言项目的依赖项。
我有一个多工作区项目,其结构是:
apps/go.mod go.work
该项目包含一个子模块 apps
及其 go.work
文件具有:
go 1.180 use ( ./apps )
我有另一个go项目(单独的存储库)想要将此app
子模块作为库导入,下面是go.mod
:
module xxxx go 1.18 require ( github.com/zhaoyi0113/test-go-module v0.0.3 // indirect )
然后我有以下代码:
package main import ( "github.com/zhaoyi0113/test-go-module/apps/logger" ) func main() { logger.test() }
编译失败,错误如下:
main.go:7:2: no required module provides package github.com/zhaoyi0113/test-go-module/apps/logger; to add it: go get github.com/zhaoyi0113/test-go-module/apps/logger
如何从多工作区项目导入子模块?
您无法导入工作区。
目前的情况是这样的:
github.com/zhaoyi0113/test-go-module/apps
有一个模块 声明其模块路径为 github.com/zhaoyi0113/test-go-module
。该模块不可用,因为该模块的实际路径与声明的路径不匹配(请注意其中一个路径中缺少 /apps
)。
xxxx模块需要github.com/zhaoyi0113/test-go-module
,但在该路径下没有找到模块。它位于 apps
子目录中,如上一段所述。
根据您想要放置模块的位置,有两种可能的修复方法。
如果你想将导入的 go.mod 保留在 当前目录中 然后更新模块路径以包含 apps
:
导入模块的go.mod:
module github.com/zhaoyi0113/test-go-module/apps go 1.19
用于导入模块的go.mod:
module xxxx go 1.18 require ( github.com/zhaoyi0113/test-go-module/apps v0.0.3 // indirect )
第二个也是常规选项 就是将go.mod放在项目的根目录下,并将go.work文件放在项目之外。要实现此功能,请将 go.mod 移至项目的根目录(因为它在最初的提交中)并将 go.work 移到其他地方。不需要对导入模块进行任何更改。
以上是如何将工作区作为依赖项导入到另一个 go 存储库中?的详细内容。更多信息请关注PHP中文网其他相关文章!