在項目中的go.mod文件中有這樣一句:
require (
github.com/xxx-devops/xx1/sdk/go v2.2.3
)
項目的編譯沒有問題,但是goland中出現如下提示:
go: errors parsing go.mod:
D:/source/github/ahfuzhang/go.lib/go.mod:8: require github.com/xxx-devops/xx1/sdk/go: version "v2.2.3" invalid: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2
於是我換個寫法:
require (
github.com/xxx-devops/xx1/sdk/go v2.2.3+incompatible
)
錯誤信息變為:
go list -m: github.com/xxx-devops/xx1/sdk/go@v2.2.3+incompatible: invalid version: +incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required
解決的辦法如下:
require (
github.com/xxx-devops/xx1/sdk/go/v2 v2.2.3
)
然后編譯,然后go.mod文件變成了:
require (
github.com/xxx-devops/xx1/sdk/go v0.0.0-20201126031658-a2b707072c79
github.com/xxx-devops/xx1/sdk/go/v2 v2.2.3
)
然后注釋掉后面一行,搞定。
結論:
1.庫還是要避免太深的路徑
2.為什么目錄中包含個v2,一定要寫到go.mod里面去?這里還沒搞懂