批量获取缺失的进口

问题描述 投票:1回答:3

当我克隆用golang编写的项目时,很少有像'github.com/XXXX'这样的导入丢失。有没有办法通过命令批量获取这些导入?或者我想要一个接一个地拿到它们。

go
3个回答
1
投票

很多golang项目现在都使用依赖管理,所以你应该首先寻找它。例如,Glide.lock(滑动)或Gopkg.lock(dep - 人们现在移动的方式)文件存在于项目的根目录中。

https://github.com/golang/dep

https://golang.github.io/dep

如果使用了dep并且你安装了它,那么dep ensure会为你设置依赖项,并确保你得到作者想要的版本

如果一个项目没有使用依赖关系管理,你可以使用go get ./...获取包,但我认为你不会保证正确的版本(例如,如果作者被固定到dep的版本标签)

如果你运行dep init它会在项目上设置dep并尝试解析正确的版本,但是如果星星没有对齐,这并不总是有效(例如我使用gopkg.in看到了依赖关系的问题)


3
投票

您应该使用go get来获取“远程”包。引自Command go: Download and install packages and dependencies

获取导入路径指定的包及其依赖项的下载。然后安装命名包,比如'go install'。

您可以在以下所有命令中使用-v标志,因此您将看到go get在幕后做了什么。

如果您只想下载软件包但不想安装它们,可以使用-d标志。

这些示例使用示例远程包github.com/somebody/somepackage,但显然它适用于在github.com之外托管的其他包。

有关更多信息,请参阅官方文档:Command go,或键入go help get


要获得包含该包的所有依赖项并安装它们的单个包,请使用

go get github.com/somebody/somepackage

要获得包含其所有依赖项的包以及以该路径为根的所有其他包(及其依赖项),并安装所有这些包,请使用:

go get github.com/somebody/somepackage/...

从命令引用:

导入路径是一种模式,如果它包含一个或多个“...”通配符,每个通配符都可以匹配任何字符串,包括空字符串和包含斜杠的字符串。这样的模式扩展到GOPATH树中找到的所有包目录,其名称与模式匹配。

要获得包含所有依赖项(和“子包”)的包,包括测试的依赖项,并安装所有它们,请使用:

go get -t github.com/somebody/somepackage/...

要更新您已有的包,请使用:

go get -u github.com/somebody/somepackage/...

要获取已有的包的依赖关系(不一定是来自远程位置):

go get path/to/package/name/...

或者转到其文件夹,然后您可以使用相对路径:

go get ./...

1
投票

尝试在项目的根目录中使用go get ./...

© www.soinside.com 2019 - 2024. All rights reserved.