使用govendor时,go install
,govendor install +local
和govendor install +vendor,^program
之间有什么区别?
govendor install +vendor,^program
表示构建并安装我的所有供应商软件包。但它安装到什么地方和哪里?它会将我的项目和供应商的命令可执行文件安装到$GOPATH/bin
,将我的项目和供应商的包对象安装到$GOPATH/pkg
吗?
govendor install +local
表示只在您的存储库中构建所有内容。那真正意味着什么呢?它会创建vendor/bin
和vendor/pkg
吗?
如果我在项目中运行go install
怎么办?这与上述两个命令有什么不同?
答案 0 :(得分:0)
Go首先进入世界,为依赖管理和工作区文件夹结构提出了全新的想法。有一个严格的层次结构,项目位于MATCH (m:Column {name: {rpt_id} }), (n:Column {name: {country_code} }), p = shortestPath((m)-[:PART_OF*..4]-(n))
RETURN p
),其他项目只是导入所有其他项目的最新版本。这样做的问题是,如果某个上游项目更改了API,那么您的项目将无法解决。这就是供应商的用武之地。
供应商是项目中的子目录,其中包含项目导入的$gopath/src/site.com/user/project
下的所有内容。不同之处在于,当上游项目引入新功能和/或修复时,供应商不会更新。因此,您必须自己更新。当go查找导入时(从最新版本开始),它将首先检查供应商,然后在$gopath/src
中查找最新版本,防止构建因莫名其妙地破坏而无明显原因。
$gopath
将您的go install
依赖项更新为最新版本;所有新项目和没有供应商的项目都将使用的版本。
$gopath
更新您的特定项目供应商依赖项。这应该在单独的提交中完成;您应govendor install +vendor,^program
,以便检查更新是否会破坏您的项目。
go test; govendor; git commit; go test
显然只是构建项目。
另外,你应该恕我直言使用godep而不是govendor。 IHMO有更好的工作流程;您的govendor install +local
拥有最新版本,然后您可以使用$gopath
更新项目。它也应该是golang 1.10中的标准。