[英]Fetching Go package dependencies using tags
如何使用特定導入上的版本標簽一次獲取Go軟件包的所有依賴關系?
假設我的go樹上有多個包:
src/
foo/
bar/ (go code in package bar)
x.go
quux/ (go code in package main)
y.go
現在讓軟件包“ bar”依賴於使用標簽版本的第三方庫
(即通常使用: go get -tags mylib_2.0 github.com/user/mylib )
我想做的是在導入行上指定一個標簽,這樣我樹上的get。/ ...就可以得到正確的版本方案。 就像是:
import "github.com/user/mylib" `tags=mylib_2.0`
也改變您的項目結構:
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
這是處理不同版本的lib的唯一可能方法。
這樣,您還可以解決jnml所述的問題,現在每個庫都具有與其他庫的依賴關系和版本。
由於評論而更新:
根據此處描述的工作空間文檔:
http://golang.org/doc/code.html#Workspaces
你的結構看起來像
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
meier/
v1/ (go code in package main)
w.go
v2/ (go code in package main)
w.go
現在在bar lib(x.go)中,您需要lib * quux(y.go)中的函數
導入這個,你會寫:
import "foo/quux/v1/"
就像要注意的那樣,您還可以在結構中進行打包之前的版本,因此您的結構可能看起來像/ foo / v1 / quux,而不是foo / quux / v1,因此無需命名導入。
現在lib quux在版本1中使用lib meier
因此導入將是:
import "foo/meier/v1"
關於jnml,現在您的lib bar也需要lib meier,但是在版本2中
因此導入看起來像:
import "foo/meier/v2"
現在,當您致電: bar-> quux-> meier
您會看到您無法將bar中的返回值分配/傳遞給meier的東西
因為: meier / v1!= meier / v2
並且在編譯過程中這將已經失敗。
如果您需要處理來自meier v1的 quux結果,則還需要在欄中導入meier / v1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.