登录
首页 >  Golang >  Go问答

创建无主文件的 Go 模块

来源:stackoverflow

时间:2024-02-21 09:12:26 215浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《创建无主文件的 Go 模块》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我有一个小模块,其中包含一些共享代码。该模块如下所示:

shared
├── go.mod
├── go.sum
├── logging
│   └── logger.go
└── db-utils
    ├── db.go

如果我尝试从目录内部构建共享模块,我会收到一条错误,表明该模块下没有可用的 go 文件。

bash-3.2$ go build .
no Go files in /Users/xxxx/go/src/Shared

有没有办法构建一个内部只有包而没有 main.go 文件的 go 模块?这里的动机是在无法访问互联网或私人存储库的其他 go 模块中使用这些包来检索包。


正确答案


go 命令将下载的模块存储在 module cache 中作为源代码,而不是编译的目标文件。 go build 按需重建目标文件并将其存储在单独的 build cache 中。

如果您想分发非公共模块以与其他模块一起使用,您有几个选择:

  1. 您可以将模块发布到私有存储库(通常使用 .netrc 文件中存储的凭据进行访问),并使用 GOPRIVATE 环境变量告诉 go 命令不要尝试从公共代理获取它,并且校验和服务器。

  2. 您可以提供包含源代码的私有 GOPROXY 服务器或目录,并使用 goproxy 环境变量来指示 go 命令使用该代理。

  3. 您可以将源代码发布为目录树,并使用使用者的 go.mod 文件中的 replace directive 将其插入模块图中。

如果您只需要在 loggingdb-utils 目录中构建文件,那么您可以从根目录 shared 执行以下命令:

go build /logging
go build /db-utils

如果其中一个文件依赖于其他目录中的文件,我不确定这些命令是否有效。

另一个可能构建整个项目的命令是:

go build ./...

好了,本文到此结束,带大家了解了《创建无主文件的 Go 模块》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>