[英]Fetching Go package dependencies using tags
如何使用特定导入上的版本标签一次获取Go软件包的所有依赖关系?
假设我的go树上有多个包:
src/
foo/
bar/ (go code in package bar)
x.go
quux/ (go code in package main)
y.go
现在让软件包“ bar”依赖于使用标签版本的第三方库
(即通常使用: go get -tags mylib_2.0 github.com/user/mylib )
我想做的是在导入行上指定一个标签,这样我树上的get。/ ...就可以得到正确的版本方案。 就像是:
import "github.com/user/mylib" `tags=mylib_2.0`
也改变您的项目结构:
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
这是处理不同版本的lib的唯一可能方法。
这样,您还可以解决jnml所述的问题,现在每个库都具有与其他库的依赖关系和版本。
由于评论而更新:
根据此处描述的工作空间文档:
http://golang.org/doc/code.html#Workspaces
你的结构看起来像
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
meier/
v1/ (go code in package main)
w.go
v2/ (go code in package main)
w.go
现在在bar lib(x.go)中,您需要lib * quux(y.go)中的函数
导入这个,你会写:
import "foo/quux/v1/"
就像要注意的那样,您还可以在结构中进行打包之前的版本,因此您的结构可能看起来像/ foo / v1 / quux,而不是foo / quux / v1,因此无需命名导入。
现在lib quux在版本1中使用lib meier
因此导入将是:
import "foo/meier/v1"
关于jnml,现在您的lib bar也需要lib meier,但是在版本2中
因此导入看起来像:
import "foo/meier/v2"
现在,当您致电: bar-> quux-> meier
您会看到您无法将bar中的返回值分配/传递给meier的东西
因为: meier / v1!= meier / v2
并且在编译过程中这将已经失败。
如果您需要处理来自meier v1的 quux结果,则还需要在栏中导入meier / v1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.