[英]Dependency issue within two projects that use same lib
我有兩個項目:
/myproject
/sharedproject
它們都由dep管理,我已經執行go get -u github.com/golang/dep/cmd/dep
以獲得最新的dep版本,並在兩個項目上運行dep ensure
go get -u github.com/golang/dep/cmd/dep
。
當我運行myproject
以下錯誤:
cannot use op (type *"myproject/vendor/github.com/go-openapi/spec".Operation) as type *"sharedproject/vendor/github.com/go-openapi/spec".Operation
有什么問題以及如何解決?
看起來情況是sharedproject
了github.com/go-openapi/spec
依賴關系,而myproject
從GOPATH
獲取了sharedproject
和github.com/go-openapi/spec
依賴關系。
現在,當你是指github.com/go-openapi/spec
在sharedproject
,它指的是供應商目錄,這是從同一個包在技術上是不同的包里面GOPATH
,即使雙方有相同的內容。 所以,當你通過類型的變量*github.com/go-openapi/spec.Operation
從myproject
到的功能sharedproject
,該類型的包從什么預期,編譯失敗的區別。
要解決此問題,請確保將sharedproject
供應在myproject
。 執行此操作時, dep ensure
sharedproject
不帶其供應商目錄的sharedproject
副本放入myproject
的供應商目錄中。 之后, myproject
和sharedproject
都將使用myproject
的供應商目錄中的github.com/go-openapi/spec
包。
如果您經常更改sharedproject
並想立即在myproject
使用這些更改,那確實會使本地開發變得困難(在將更改推送到Git遠程之前,不能使用dep
)。 我可以通過不使用dep
手動將sharedproject
復制到myproject
的供應商目錄中來解決此問題(當然不包括供應商目錄)。 注意不要將那些手動復制的更改提交到Git!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.