Go 模块名工作不正常

Go 模块名工作不正常,go,go-modules,Go,Go Modules,有一个地址为gitlab.myownsite.com的私有git站点,文件夹结构如下: /common |___ /libs |___ /lib_a |__ lib_a.mod /somethingelse 请注意,这不是单个项目的文件夹结构,而是gitlab.myownsite.com的结构,其中包含许多repo。例如,我通过Go编写一个库libu a,然后在路径gitlab.myownsite.com/common/libs

有一个地址为
gitlab.myownsite.com
的私有git站点,文件夹结构如下:

/common
    |___ /libs
           |___ /lib_a
                  |__ lib_a.mod
/somethingelse
请注意,这不是单个项目的文件夹结构,而是gitlab.myownsite.com的结构,其中包含许多repo。例如,我通过Go编写一个库
libu a
,然后在路径
gitlab.myownsite.com/common/libs/libu a
创建一个repo,其模块名为:

module gitlab.myownsite.com/common/libs/lib_a
但是,此命名违反了
github.com/username/reponame
的命名规则,这导致另一个项目通过以下方式使用我的库:

import "gitlab.myownsite.com/common/libs/lib_a"
错误地解析以导入gitlab.myownsite.com/common/libs.git的子包lib_a,将
common
识别为
username
,将libs识别为
reponame
,将lib_a识别为packagename。go mod报告错误:

repository 'https://gitlab.myownsite.com/common/libs.git/' not found
我无法更改这个私有gitlab站点的文件夹结构,如何解决这个问题


我的go模块env有:GOPRIVATE=gitlab.myownsite.com

感谢@指出,go get execute时有一个元信息响应,描述路径的哪一部分是repo(the
.git
)。不幸的是,gitlab已经成功了。我相信搜索可以避免这个问题。或者,最后一种方法是重新构造gitlab路径

您有多个模块吗?
go.mod
文件在哪里?这个gitlab与许多人共享。lib_x是独立的项目,但是它们有相同的父文件夹什么是
lib_a.mod
lib_b.mod
?它们与您的Go代码有何关联?你是想把
go.mod
文件放在这些位置,还是别的什么?我不确定你的评论是不是想解决@icza的问题,但事实并非如此。你们有多个模块吗?
go.mod
文件在哪里?确保您的gitlab提供了必要的和相关的导入元头。阅读请注意,您认为存在某种“github.com/username/reponame命名规则”的假设是完全错误的。没有这样的事。go工具知道一些代码托管站点,所有其他站点(尤其是YoutGitlab实例)都必须提供
响应。无需更改任何文件夹布局。