My Golang project depends on a few packages (i.e. https://github.com/mattes/migrate and https://github.com/joho/godotenv). I know I can go get
or go install
them separately, but is there a way to install all of the dependencies of a project in one shot? Ideally, I would expect go install ./...
to put the migrate
and godotenv
binaries in my $GOPATH/bin
, but it only installs the main package binary and not the binaries of the dependencies.
答案 0 :(得分:1)
您是否想要一种方法从您的本地计算机上自动从代码的go install ./...
安装要呼叫的二进制文件?
直接Go不会发生这种情况,除非它们以相同的用户名或模式列出,您可以在单个go install命令中输入。但只是上面列出的两个是不同的,不会发生。
选项1)要求您的用户为每个依赖关系调用go install
(这很常见)。
选项2)或者,创建一个bash / batch文件,在repo中使用简单的install.sh
命令运行它们。哪个,会为所有依赖项调用go install
。另一种类似UNIX / C的方法是创建Makefile
,并告诉用户运行make
就个人而言,我更喜欢选项2,因为它可以让您对服务或实用程序进行非常复杂的控制。你可以开始简单;但是,稍后会添加测试,go generate
命令以及将来您喜欢的任何其他内容 - 所有这些都无需更改安装说明just run 'make install' and it will handle it
。它也有助于C.I.服务器,你可以拥有make test
或任何你想要的东西;但是,正常用户通常会运行它。全部,在一个Makefile
内,您可以稍后更改。
我认为我的Updater脚本有25个go get -u -v
命令。