首页 >后端开发 >Golang >如何将工作区作为依赖项导入到另一个 go 存储库中?

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

王林
王林转载
2024-02-09 08:33:20648浏览

如何将工作区作为依赖项导入到另一个 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删除