解決模組與子模組的衝突
在Go 模組依賴項中遇到衝突可能會令人沮喪,尤其是當頂級模組及其子模組發生衝突時子模組作為不同版本單獨導入。當一個或多個依賴項引用模組或子模組的 Go 版本之前的版本時,就會出現此問題,從而導致檢索模組和子模組相依性。
辨識衝突
在提供的範例中,模組依賴關係圖類似於以下內容:
├── main module (github.com/test-org/test-repo) │ ├── github.com/foo/bar v1.0.0 │ └── github.com/raz/mataz v1.0.0 └─────github.com/shared/dependency ├── submodule: github.com/shared/dependency/api └── two downloaded versions: - v1.1.0 (module-less version) - v1.2.0 (Go module version)
解決衝突
此中的不明確導入錯誤case 表示對github.com/shared/dependency/api 的模組引用與github.com/shared/dependency 儲存庫的黑盒導入之間存在衝突。為了解決這個問題,我們需要強制模組和子模組版本一致。
解決方案:使用替換指令
解決方案是添加一個替換指令在主模組的 go.mod 檔案中。該指令強制所有對子模組的引用使用特定版本。在此範例中,我們強制引用使用 github.com/shared/dependency v1.2.0,這是啟用 Go 模組的版本。
replace ( github.com/shared/dependency => github.com/shared/dependency v1.2.0 )
注意: 此解決方案假設所有依賴項仍需要使用啟用 Go 模組的版本的 github.com/shared/dependency。如果不是這種情況,可能需要其他解決方案,例如修改引用的依賴版本或使用像 Glide 這樣的依賴管理工具。
以上是如何解決Go Module子模組的模組衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!