首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用相同lib的两个项目中发出依赖项

在使用相同lib的两个项目中发出依赖项
EN

Stack Overflow用户
提问于 2018-09-12 16:06:27
回答 1查看 49关注 0票数 0

我有两个项目:

代码语言:javascript
复制
/myproject
/sharedproject

它们都由dep管理,我执行go get -u github.com/golang/dep/cmd/dep以获得最新的dep版本,并在两个项目上运行dep ensure

当我运行myproject时,会得到以下错误:

代码语言:javascript
复制
cannot use op (type *"myproject/vendor/github.com/go-openapi/spec".Operation) as type *"sharedproject/vendor/github.com/go-openapi/spec".Operation

有什么不对,怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 19:21:36

看起来情况是sharedproject供应商提供github.com/go-openapi/spec依赖,而myprojectGOPATH获得sharedprojectgithub.com/go-openapi/spec依赖关系。

现在,当您在sharedproject中引用sharedproject时,它引用了供应商目录中的包,这在技术上不同于GOPATH中的同一个包,即使两者都有相同的内容。因此,当您将*github.com/go-openapi/spec.Operation类型的变量从myproject传递给sharedproject中的函数时,类型的包与预期的不同,编译失败。

要解决这个问题,请确保sharedprojectmyproject中得到了满足。当您这样做时,dep ensure会将一个没有供应商目录的sharedproject副本放到myproject的供应商目录中,之后,myprojectsharedproject都将使用myproject供应商目录中的github.com/go-openapi/spec包。

如果经常更改sharedproject并希望立即在myproject中使用这些更改,这确实会使本地开发变得困难(在将更改推送到Git远程之前,不能使用dep )。我会手动地将sharedproject复制到myproject的供应商目录中,而不使用dep (当然不包括供应商目录),但是要小心不要将那些手工复制的更改提交到Git!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52299402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档