如何将工作区作为依赖项导入到另一个 go 存储库中?

王林
发布: 2024-02-09 08:33:20
转载
550 人浏览过

如何将工作区作为依赖项导入到另一个 go 存储库中?

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中文网其他相关文章!

相关标签:
来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!