" go get -t ./...&#34 ;, Travis CI,并安装所有go依赖项

时间:2018-02-13 22:19:19

标签: go travis-ci dependency-management

在此处的文档中:https://docs.travis-ci.com/user/languages/go#Dependency-Management

这是安装依赖步骤:

  

如果版本大于或等于1.2

go get -t ./...

我的项目如下:

root
---- src
  ---- github.com
  ---- myProject
---- pkg

GOPATH设置为root

但是我收到了这个错误:

package github.com/aws/aws-lambda-go/lambda: home/travis/build/path/to/package exists but home/travis/build/path/to/package.git does not - stale checkout?

如何像nodejs中的npm install那样立即安装所有依赖项?

1 个答案:

答案 0 :(得分:2)

  

如何立即安装所有依赖项?

这就是go get所做的......在您的情况下,某些内容可能会被错误配置或损坏。你可以先尝试一些事情。

  • go get安装到$ GOPATH环境变量的第一个路径中。确认它已设置为您想要的(通常是以名为go的目录结尾的路径;将创建子目录srcpkg等。

  • 如果您要使用./...,请确保从正确的目录中呼叫go get

  • 检查以确保git root位于正确的位置

  • 尝试使用非通配符名称/路径/地址作为您要获取的包,而不是./...

  • 尝试在没有go get标记

  • 的情况下调用-t

如果这些都不起作用,您可以通过删除目录(home / travis / build / path / to / package)并再次尝试来解决问题 - 确保您没有删除您工作的任何代码on,或git repository / files,除非它在某处备份。

根据Go tools documentation,您只需要致电

go get [packages]

安装命名包及其依赖项:

  

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

...省略号是一个通配符,可以展开以匹配任何字符串。请参阅Description of Package Lists

部分
  

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

./表示“此处”:因此,如果您要使用./...

,请确保您从正确的目录运行

-t标志用于下载构建测试所需的包:

  

-t标志指示get还下载构建指定包测试所需的包。

您看到的错误与git有关。有时原因不明,但通常可以通过删除目录并重新开始来修复(例如,参见"Error to install golint""Correct way to get package"

(您可能还会发现this blog post on configuring travis-ci for Go有帮助。)