You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在另一个Go仓库中导入多工作区项目的子模块作为依赖?

解决Go多工作区子模块被外部项目导入的问题

问题原因

编译报错的核心是外部项目无法定位到github.com/zhaoyi0113/test-go-module/apps/logger对应的模块,主要源于两点:

  • apps子模块的go.mod定义的module路径与代码中的导入路径不匹配
  • 该子模块未正确发布到远程仓库(或本地未做路径映射)

解决步骤

1. 修正apps子模块的配置

首先打开apps/go.mod,确保module路径与导入路径完全匹配:

module github.com/zhaoyi0113/test-go-module/apps

go 1.18

同时修正根目录go.work中的版本笔误(将1.180改为1.18):

go 1.18
use (
    ./apps
)

2. 发布apps子模块到远程仓库

将apps模块的代码推送到GitHub对应仓库,并为子模块打版本标签:

# 进入apps子模块目录
cd apps
# 提交并推送代码
git add .
git commit -m "add logger package"
git push origin main
# 为子模块打版本标签(格式为子模块路径/版本号)
git tag apps/v0.0.3
git push origin apps/v0.0.3

3. 在外部项目中拉取依赖

回到外部项目,执行命令拉取apps模块:

go get github.com/zhaoyi0113/test-go-module/apps@v0.0.3

执行后外部项目的go.mod会自动添加对应依赖:

module xxxx

go 1.18

require (
    github.com/zhaoyi0113/test-go-module/apps v0.0.3
)

本地开发场景(无需远程发布)

如果仅做本地测试,可在外部项目的go.mod中添加replace指令直接映射本地路径:

module xxxx

go 1.18

require (
    github.com/zhaoyi0113/test-go-module/apps v0.0.3
)

replace github.com/zhaoyi0113/test-go-module/apps => /本地多工作区项目的绝对路径/apps

添加后执行go mod tidy即可正常编译。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:43:09