亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將具有多個程序的 GOPATH repo 轉換為 GO 模塊

將具有多個程序的 GOPATH repo 轉換為 GO 模塊

Go
繁花不似錦 2022-12-26 10:45:21
我們有一個使用舊 GOPATH 結構的舊 git 存儲庫。該存儲庫包含多個實用程序的代碼,每個實用程序都有自己的 main.go。此外,它還包含一個帶有多個子文件夾的“公共”文件夾,每個子文件夾都具有各種共享位功能。結果是這樣的:progOne\main.go (and other code, some in subfolders)progTwo\main.go (and other code, some in subfolders)progThree\main.go (and other code, some in subfolders)common\net\ (go files, but no main)common\colors\ (go files, but no main)common\resources\ (go files, but no main)在將其轉換為 go 模塊時,我可以將所有這些留在一個用于生成多個可執行文件的 git 存儲庫中嗎?如果是,哪個子文件夾需要包含 go.mod 文件?編輯:感謝@colm.anseo 的全面回復。這可能是一個單獨的問題,但由于它密切相關,所以我會在這里問。一旦我按照建議在 repo 的根目錄中創建了一個 go.mod 文件,我就在 VSCode 中打開了根文件夾。我想調試“ProgOne”,所以我設置了這樣的啟動配置:{   "name": "Launch Package",   "type": "go",   "request": "launch",   "mode": "debug",   "program": "${workspaceFolder}/progOne/main.go",   "buildFlags": ""}但是當我嘗試啟動調試器時,構建失?。篠tarting: /Users/me/dev/go/bin/dlv dap --check-go-version=false --listen=127.0.0.1:58867 --log-dest=3 from /Users/me/dev/convoy/myRepo/progOneDAP server listening at: 127.0.0.1:58867Build Error: go build -o /Users/me/dev/convoy/myRepo/progOne/__debug_bin -gcflags all=-N -l ./main.gomain.go:20:2: no required module provides package git.acme.com/myRepo/common/colors; to add it:    go get git.acme.com/myRepo/common/colors(exit status 1)我同時運行了“go mod tidy”和“go get git.acme.com/myRepo/common/colors”,但這并沒有解決問題。我不希望其中任何一個是必要的,因為有問題的模塊是這個存儲庫的一部分。我需要做什么才能使該導入工作?
查看完整描述

1 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

我可以將所有這些留在一個用于生成多個可執行文件的 git 存儲庫中嗎?


是的。


如果是,哪個子文件夾需要包含 go.mod 文件?


正如@Peter 指出的那樣 - 只有您需要版本的那些。


只是go mod init如果您不確定 - 如果生成的路徑不正確,請提供模塊路徑。


獎勵建議,如果您正在對該目錄進行版本控制,請通過 git 標簽標記您的個人目錄。您可以對包(非主)目錄或可執行(主)包執行此操作。


如果需要,這將允許用戶安裝特定版本的可執行文件。


可執行文件的 git 標簽示例:


progOne/v0.1.0

progTwo/v0.2.5

progThree/v0.3.4

用戶可以像這樣安裝特定版本:


go install github.com/me/myrepo/[email protected]

或用于@latest獲取最新版本。


如果包需要特定版本的依賴包,請像這樣標記它們:


common/net/v0.1.2

common/colors/v0.3.5

common/resources/v0.5.9

對于依賴于這些的每個可執行文件,您將go get使用所需的版本執行一個(這將依次更新go.mod)


正如您從上面看到的那樣,標簽應該與目錄名稱匹配 - 然后以SemVer 結尾。

有關模塊標記的信息,請參閱官方博客文章Publishing Go Modules


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號