首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go多模块依赖管理

Go多模块依赖管理
EN

Stack Overflow用户
提问于 2022-04-08 22:44:04
回答 2查看 452关注 0票数 1

我是goLang的新手。我正在尝试开发一个multiModule项目。我的工作区文件夹就像

代码语言:javascript
复制
root
   1-Authz
   1.1-Main.go
   1.2-go.mod (contains:module com.mbt.authz)
   1.3-go.sum
   2-Product
   2.1-Main.go
   2.2-go.mod  (contains:module com.mbt.product)
   2.3-go.sum
   3-go.work
   4-GoMultiModule.code-workspace

   go.work folder is like 
   go 1.18

   use(
    ./Authz
    ./Product
   )

这两个模块都可以自行运行。但是我想在Authz中定义一个方法,并从Product中调用该函数。我应该做什么,如何从本地工作区向Product模块添加依赖项?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-09 02:16:16

这是一个常见的问题,许多新的高丽开发商。

中,模块和包是不一样的。A模块可能包含一个或多个包。使用go mod init [modulename]命令初始化模块。此命令将创建一个go.mod文件。包可以简单地用package [packagename]在代码中定义。可以使用import "[packagename] [modulename]/[pathofpackage]"导入同一个模块中的包(让我们称之为本地包)

在这种情况下,如果不想创建不同的模块,可以在Authz和Products文件夹中删除go.mod和go.sum文件。然后在根文件夹中运行go mod init root。然后用类似于import (authz "root/authz")的东西在产品代码中导入auth包(authz是在Authz代码中被忽略的包名)

如果authz必须是不同的模块,那么它将被视为不同的模块,不能像本地包那样以抖动的方式导入。

要在Authz文件夹中导入本地模块,您需要编辑products文件夹中的go.mod文件,如下所示:

代码语言:javascript
复制
module somemodulename

go 1.16

require (
    authzmodulename v0.0.0
)

replace authzmodulename v0.0.0 => ../Authz/
票数 2
EN

Stack Overflow用户

发布于 2022-04-09 00:24:09

为了进行测试,只需在Product/main.go中添加引用Authz的导入

代码语言:javascript
复制
import com/mbt/authz/aPackage

这假设您在与main不同的包中定义了Authz项目中的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71803835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档