具有多个路径的 Go 模块
php小编子墨介绍:最近,Go语言中的模块管理工具又迎来了新的功能——多路径模块。这一功能的引入,使得开发者在使用Go模块时可以更加灵活地指定模块的路径。以往,开发者只能将模块安装在固定的路径下,导致模块的依赖关系较为复杂。而现在,多路径模块的出现,为开发者提供了更多的选择,使得模块的管理更加方便灵活。开发者可以根据项目的需要,将模块安装在不同的路径下,从而实现更好的模块管理与版本控制。这一新功能的引入,将进一步提升Go语言的开发效率和便利性。
问题内容
我有一个镜像到多个位置的 go 模块。一个在 gitlab 中,另一个在 bitbucket 中。当尝试将其基于新的 gitlab 位置时,我得到:
go: gitlab.com/company/[email protected]: parsing go.mod: module declares its path as: bitbucket.org/company/core but was required as: gitlab.com/company/core
我知道为什么会发生这种情况,但是我如何将我的 go.mod 定义为“或”?
解决方法
简短回答:你不能。
但一切也许都不会失去......
如果您在模块路径引用的位置和由于某种原因您更喜欢从中下载的其他位置都有代码,则可以配置 git alias
将引用从指定的模块路径重定向到所需的下载来源:
git config --global --add url."https://<download path>".insteadof "https://<module path>"
别名不必完全替换。您可以使用别名来替换任何模块路径上的前缀。因此,如果您在服务器 x 上托管了许多已在服务器 y 上识别(在其模块路径中)的模块,则只需为该服务器添加别名即可主机前缀和路径覆盖所有这些模块(只要存储库名称相同)。
例如,我们使用它为本地 azuredevops server git 存储库中托管的模块创建“友好”模块路径,例如:
git config --global --add url."https://tfs.myorg.com/myorgcollection/_git".insteadof "https://tfs.myorg.com"
然后,我们的模块就能够将自己标识为 tfs.myorg.com/somemodule.git
,但是当 go get
尝试获取此 git 时,它将在 https://tfs.myorg.com/myorgcollection/_git/somemodule 中查找它.git
(.git
后缀是必要的 azure devops 特性)
说实话,我还没有在完全不同的服务器上尝试过这个,只是为了在同一服务器上“重写”路径,但原则上它应该可以工作。所以在你的情况下:
git config --global --add url."https://gitlab.com/company/".insteadof "https://bitbucket.org/company/"
因为这适用于 git
级别的事物,就 go
而言,它仍然从 bitbucket.org
获取,即使 git
将在后台访问 gitlab.com
。
即当您 go get
时,您需要引用声明的模块路径:
go get bitbucket.org/company/core
这样做的唯一缺点是,您需要在任何/所有工作站(和构建机器)上配置别名,这些工作站需要从模块路径中声明的位置以外的任何位置 go get
。
以上是具有多个路径的 Go 模块的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

Go语言中字符串打印的区别:使用Println与string()函数的效果差异在Go...

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

GoLand中自定义结构体标签不显示怎么办?在使用GoLand进行Go语言开发时,很多开发者会遇到自定义结构体标签在�...

Go语言中哪些库是大公司开发或知名开源项目?在使用Go语言进行编程时,开发者常常会遇到一些常见的需求,�...

Go语言中结构体定义的两种方式:var与type关键字的差异Go语言在定义结构体时,经常会看到两种不同的写法:一�...
