Несколько модулей Go в монореполе и пользовательской структуре каталогов
У меня есть 2, возможно, связанные вопросы.
У меня есть тестовая установка monorepo, с 2 подкаталогами (mod1
а также mod2
).
Каждый из них имеет go.mod
файл в них, и каждый из модулей имеет один .go
файл с основным кодом печати. в mod2
есть подкаталог mod2_lib
(который содержит один из тех простых .go
файлы с базовым кодом печати), так как я прочитал, что модули Go в основном свои собственные маленькие GOPATH
"S.
Я хотел бы вызвать функцию 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")
}
Вторая проблема заключается в том, что в этом монореполе я хотел бы иметь связанный код Python и Rust в директориях верхнего уровня. py
а также 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 ответ
Проблема заключалась в том, что это было частное репозиторий на github.com. сделав это публично исправил это!:) Нужно выяснить аутентификацию сейчас для модульной системы.