monorepo和自定义目录结构中的多个Go模块

时间:2019-01-08 16:36:23

标签: go go-modules

我有2个可能相关的问题。

我有一个测试monorepo设置,带有2个子目录(mod1mod2)。
每个模块都有一个go.mod文件,每个模块都有一个带有基本打印代码的.go文件。在mod2中有一个子目录mod2_lib(其中包含带有基本打印代码的简单.go文件之一),因为我读到Go模块基本上是它们自己的小GOPATH的。

enter image description here

Id希望从Run()的包mod2/mod2_lib中调用函数mod1,但是我得到的只是build github.com/account_name/test/mod1: cannot find module for path github.com/account_name/test/mod2/mod2_lib

以下是我用来解决此问题的文件:

mod1 / t.go

package main

import (
    "fmt"
    "github.com/account_name/test/mod2/mod2_lib"
)

func main() {
    fmt.Println("mod1")
    mod2_lib.Run()
}

mod2 / mod2_lib / t_lib.go

package mod2_lib

import "fmt"

func Run() {
    fmt.Println("RUNS")
}

第二个问题是,在此monorepo中,我希望在顶级目录pyrust中具有相关的Python和Rust代码。因此,我想将我所有的Go软件包都放在go/src目录中。其他人将如何将此go/src路径导入他们的项目(可能仍以"github.com/account_name/test/mod2/mod2_lib"作为导入路径,而不是"github.com/account_name/test/go/src/mod2/mod2_lib")?

有人可以给我一些关于这些问题的建议吗?我想转而使用Golang模块,而放弃GOPATH

1 个答案:

答案 0 :(得分:-1)

问题在于这是一个私人github.com回购。公开修复它! :)现在必须弄清楚模块系统的身份验证。