繁体   English   中英

使用相同库的两个项目中的依赖关系问题

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

有什么问题以及如何解决?

看起来情况是sharedprojectgithub.com/go-openapi/spec依赖关系,而myprojectGOPATH获取了sharedprojectgithub.com/go-openapi/spec依赖关系。

现在,当你是指github.com/go-openapi/specsharedproject ,它指的是供应商目录,这是从同一个包在技术上是不同的包里面GOPATH ,即使双方有相同的内容。 所以,当你通过类型的变量*github.com/go-openapi/spec.Operationmyproject到的功能sharedproject ,该类型的包从什么预期,编译失败的区别。

要解决此问题,请确保将sharedproject供应在myproject 执行此操作时, dep ensure sharedproject不带其供应商目录的sharedproject副本放入myproject的供应商目录中。 之后, myprojectsharedproject都将使用myproject的供应商目录中的github.com/go-openapi/spec包。

如果您经常更改sharedproject并想立即在myproject使用这些更改,那确实会使本地开发变得困难(在将更改推送到Git远程之前,不能使用dep )。 我可以通过不使用dep手动将sharedproject复制到myproject的供应商目录中来解决此问题(当然不包括供应商目录)。 注意不要将那些手动复制的更改提交到Git!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM