我一直遇到我在本地安装依赖项的问题,它工作正常,我推送到持续集成服务器,然后它中断了,因为我忘记了godepsave./...依赖项.如何运行go命令但需要vendor导入?编辑:我正在使用go1.6。如果第3方依赖项不解析给vendor,我希望命令失败。换句话说,有没有办法在测试期间停止解析$GOPATH中的依赖项?我无法更改环境变量,因为那样我的项目模块都无法解析。如何强制依赖vendor? 最佳答案 没有办法阻止构建器扫描$GOPATH包。看来,您使用不太好的流程来管理依赖项。我建议您使用glide进行销售。最推荐的工作流程:
我的项目结构/github.com/user-libraries-services-service-api-signup-Dockerfile-main.go-service-api-second-...-vendorservice-api-signup中的Docker文件FROMgolangCOPY./go/src/github.com/user/services/service-api-signup#needtocopyallthedependenciesonvendorto/go/src/github.com/..如何将我对vendor和libraries文件夹的所有依赖项复制到
我对Go相当陌生,有Java背景,正在尝试找出Go依赖管理的最佳实践。如果我的项目A依赖于项目B,并且我在我的vendor包中引用了项目B,那么运行goinstall会下载我需要的一切。但是,假设我在项目B中发现了一个错误并修复了,我如何确保项目A保持最新状态?比如,是否有某种方法可以在每次部署时进行安装,以确保我没有遗漏任何东西?在Java中,在每次部署时我都会做我自己的mvnpackage以最好地确保每个部署都是自给自足的。有什么方法可以在Go中做同样的事情吗?如果这是一个非常基本的问题,我深表歉意-但我找不到好的答案。 最佳答案
我在使用vendor目录中的google.golang.org/grpc时遇到问题,并且出现以下错误cannotuse&metadata.HeaderMD(type*"google.golang.org/grpc/metadata".MD)astype*"project1/vendor/google.golang.org/grpc/metadata".MDinargumenttogrpc.Header虽然我使用的是从我的gopath复制的必要版本的包,但我收到了错误。但是,当我从vendor中删除golang.google.org/grpc文件夹时,我的项目从gopath获取依赖项并且
情况:假设我有一个名为mypackage的包。它公开了一个名为Build()的方法,该方法返回一个由名为thirdpartypackage的第三方库公开的具体结构,例如如下图所示:packagemypackageimporttpp"github.com/thirdpartycompany/thirdpartypackage"funcBuild()*tpp.SharedStruct{//...implementation}公开SharedStruct的包在mypackage中出售,因为我想分发它并使该包独立。问题:将mypackage导入另一个项目并在我的(集成)测试中使用thirdpa
根据thisdocument我需要将-mod=vendor添加到我的构建命令中以使用我的本地vendor文件夹:Bydefault,gocommandslikegobuildignorethevendordirectorywheninmodulemode.The-mod=vendorflag(e.g.,gobuild-mod=vendor)instructsthegocommandstousethemainmodule'stop-levelvendordirectorytosatisfydependencies.当我运行这个命令时:gobuild-mod=vendor-a-ldflag
将我的Go服务部署到GoogleAppEngine(标准)时,我收到一条错误,描述未找到模块版本,但编译一切正常。模块位于私有(private)Github实例上,并checkout到vendor/。gobuild-modvendor-o/dev/null./...在cloud-build-local、本地和GoogleCloudBuild中工作。github.com/company/gosystem上存在一个名为“v1.1.0”的标签:gosystem$gittagv0.0.1v0.0.2v0.0.3v1.0.0v1.1.0Failedtobuildapp:[gobuild-o/tm
在osx上使用go1.6.2进行govendor实验时遇到一些问题。这是我的目录结构:/project/applicationmain.goother.go/vendor/github.com/vendor_name/package_name我将我的GOPATH设置为/Users/me/project/application然而,当我尝试运行任何go工具(例如构建)时,它似乎在寻找application/src而不是application/vendor,得到很多这样的东西:main.go:15:2:cannotfindpackage"github.com/facebookgo/grac
我有一个Dockerfile,它是FROMgolang:1.6-alpine。我想在执行dockerbuild时尽可能多地使用docker图像缓存来加快速度。为此,我想我会添加ADDvendor/go/src/.../mypackage/vendor作为第一步,并最终运行goinstall-v.../我的包。但是,这会导致销售包(构建时间的大部分)只能在那时构建。有没有显式地构建所有销售包(即…/vendor目录中的源代码),但只有它们?我希望我的Dockerfile看起来像这样:FROMgolang:1.6-alpineADDvendor/go/src/github.com/myus
目前,我们在src/vendor中拥有所有供应库,这使得docker-composebuild非常快。尽管将销售库添加到源代码控制有库未更新的缺点,并且还会严重污染拉取请求的差异。有没有办法介于两者之间,也许是缓存? 最佳答案 Isthereawayinbetween,maybewithcaching?是的,好几个。但不要与系统/首选方法抗争。像您已经在做的那样使用$GOPATH/src/MyProject/vendor。addingvendoredlibrariestosourcecontrolhasthedisavantageo