使用相同库的两个项目中的依赖性问题
Dependency issue within two projects that use same lib
我有两个项目:
/myproject
/sharedproject
它们都由 dep 管理,我已经执行 go get -u github.com/golang/dep/cmd/dep
以获得最新的 dep 版本,并且在两个项目上执行 运行 dep ensure
。
当我 运行 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
从中获取 sharedproject
和 github.com/go-openapi/spec
依赖项
GOPATH
.
现在当你在sharedproject
中提到github.com/go-openapi/spec
时,它指的是
vendor 目录中的包,在技术上与
GOPATH
中的相同包,即使它们具有相同的内容。所以当你通过一个
*github.com/go-openapi/spec.Operation
类型的变量从 myproject
到 a
sharedproject
中的函数,类型包与预期不符,编译失败
要解决此问题,请确保 sharedproject
在 myproject
内销售。什么时候
你这样做,dep ensure
将在没有供应商的情况下放置 sharedproject
的副本
目录进入 myproject
的供应商目录。此后,myproject
和 sharedproject
都将使用 myproject
供应商目录中的 github.com/go-openapi/spec
包。
如果您经常更改 sharedproject
并且想要,这确实会使本地开发变得困难
立即在 myproject
中使用这些更改(在将更改推送到 Git 远程之前不能使用 dep
)。我会通过复制来解决这个问题
在 sharedproject
手动进入 myproject
的供应商目录而不使用 dep
(当然不包括供应商目录)。不过,请注意不要将那些手动复制的更改提交到 Git!
我有两个项目:
/myproject
/sharedproject
它们都由 dep 管理,我已经执行 go get -u github.com/golang/dep/cmd/dep
以获得最新的 dep 版本,并且在两个项目上执行 运行 dep ensure
。
当我 运行 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
从中获取 sharedproject
和 github.com/go-openapi/spec
依赖项
GOPATH
.
现在当你在sharedproject
中提到github.com/go-openapi/spec
时,它指的是
vendor 目录中的包,在技术上与
GOPATH
中的相同包,即使它们具有相同的内容。所以当你通过一个
*github.com/go-openapi/spec.Operation
类型的变量从 myproject
到 a
sharedproject
中的函数,类型包与预期不符,编译失败
要解决此问题,请确保 sharedproject
在 myproject
内销售。什么时候
你这样做,dep ensure
将在没有供应商的情况下放置 sharedproject
的副本
目录进入 myproject
的供应商目录。此后,myproject
和 sharedproject
都将使用 myproject
供应商目录中的 github.com/go-openapi/spec
包。
如果您经常更改 sharedproject
并且想要,这确实会使本地开发变得困难
立即在 myproject
中使用这些更改(在将更改推送到 Git 远程之前不能使用 dep
)。我会通过复制来解决这个问题
在 sharedproject
手动进入 myproject
的供应商目录而不使用 dep
(当然不包括供应商目录)。不过,请注意不要将那些手动复制的更改提交到 Git!