[英]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.