当前位置: 首页 > 工具软件 > Govendor > 使用案例 >

golang依赖管理 govendor

乐钱青
2023-12-01

目录

 

一 、govendor简介

二、govendor命令简介

主命令

子参数 

三、govendor安装配置

step0:环境准备

step1:安装下载govendor

step2:使用govendor

step3:常用命令组合


一 、govendor简介

  • vendor是go的一个目录形式的包管理工具,而govendor结合了vendor这机制,扩展了功能:
  1. 支持分析源码依赖包
  2. 支持指定包版本,使用vendor/vendor.json类似maven pom.xml
  3. 支持复制%GOPATH%/src的包到项目
  4. 支持vendor包下的包进行增删改查等
  • vendor仍然需要GOPATH设定下来实现,但是慢慢脱离了GOPATH/src的依赖查找,import优先查找
  1. 当前GOPATH/项目根/vendor目录
  2. GOROOT/src
  3. GOPATH/src
  • go1.5 版本提供 vendor 特性,需手动设置环境变量 GO15VENDOREXPERIMENT=1。go1.6+自动开启
  • github-govendor

二、govendor命令简介

命令描述功能
initCreate the "vendor" folder and the "vendor.json" file.创建vendor目录以及(空)vendor.json
listList and filter existing dependencies and packages.查询当前已存在依赖
addAdd packages from $GOPATH.从GOPATH拷贝依赖到vendor目录
updateUpdate packages from $GOPATH.从GOPATH更新依赖到vendor目录
removeRemove packages from the vendor folder.从vendor目录移除依赖
statusLists any packages missing, out-of-date, or modified locally.查看依赖是否丢失,过期或者修改的依赖
fetchAdd new or update vendor folder packages from remote repository.远程添加或者更新依赖到vendor目录
syncPull packages into vendor folder from remote repository with revisions from vendor.json file.远程同步vendor.json所有依赖到vendor目录
migrateMove packages from a legacy tool to the vendor folder with metadata.合并其他vendor目录到本vendor目录下
getLike "go get" but copies dependencies into a "vendor" folder.远程直接下载依赖到vendor目录下
licenseList discovered licenses for the given status or import paths.查询依赖的证书
shellRun a "shell" to make multiple sub-commands more efficient for large projects.用于大型项目中子命令支持
命令描述功能
+local(l) packages in your project限定在本项目
+external(e) referenced packages in GOPATH but not in current project限定在GOPATH
+vendor(v) packages in the vendor folder限定在vendor
+std(s) packages in the standard library限定在GOROOT
+excluded(x) external packages explicitly excluded from vendoring限定vendor排除的
+unused(u) packages in the vendor folder, but unused限定vendor未使用
+missing(m) referenced packages but not found限定vendor缺失的
+program(p) package is a main package限定main包下的
+outside+external +missing组合vendor缺失在GOPATH的
+all+all packages所有包

三、govendor安装配置

step0:环境准备

https://blog.csdn.net/qq_22211217/article/details/101116308

vendor基于GOPATH,所有项目必须在GOPATH/src下

step1:安装下载govendor

go get -u github.com/kardianos/govendor   

ps:go get 相当于git clone与 go install 
其执行文件在GOPATH/bin/govendor.exe 

等效:
使用git clone 将 github.com/kardianos/govendor下载到GOPATH/src下
再进入GOPATH/src/github.com/kardianos/govendor 使用go install main.go

step2:使用govendor

%GOPATH%/src/govendor-demo           ##在此目录下建立项目叫gomod-demo
%GOPATH%/src/govendor-demo/main.go   ##在项目目录新建src文件夹并创建main.go

##########################项目结构#########################
govendor-demo    
 └─main.go

##########################main.go ########################
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	router := gin.Default()
	router.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, "Hello World")
	})
	router.Run(":8000")
}
go get -u github.com/gin-gonic/gin  ##下载依赖到GOPATH/src

ps:go get命令下载位置由其他插件控制 若使用vgo 则下载位置将在GOPATH/pkg/mod需要手动git clone

完整的包装规格为: <path>[{/...|/^}][::<origin>][@[<version-spec>]]

一些例子:

github.com/kardianos/govendor 指定单个程序包和单个文件夹。
github.com/kardianos/govendor/...指定govendor该路径下的所有引用包。
github.com/kardianos/govendor/^指定govendor文件夹和所有子文件夹。对于资源或不需要部分存储库很有用。
github.com/kardianos/govendor/^::github.com/myself/govendor 与上述相同,但从用户“ myself”获取。
github.com/kardianos/govendor/...@abc12032所有参考的修订版软件包abc12032。
github.com/kardianos/govendor/...@v1 与上述相同,但获取最新的“ v1”标签,例如“ v1.4.3”。
github.com/kardianos/govendor/...@=v1 获取确切的版本“ v1”。

 若需要使用govendor进行依赖管理

cd /d %GOPATH%/src/govendor-demo        ##切换项目根目录
govendor init                           ##生成vendor目录和vendor.json文件 

#######################生成vendor文件夹#################################
govendor-demo    
 ├─vendor
 │     └─vendor.json
 └─main.go
     
#####################vendor.json#######################################
{
	"comment": "",
	"ignore": "test",
	"package": [
		{
			"checksumSHA1": "mKall8xfKBPL/a5Ji//i968rLsY=",
			"path": "github.com/gin-contrib/sse",
			"revision": "43f0f29dbd2b3f0feeebff91fd9cda22db296938",
			"revisionTime": "2019-09-05T05:13:34Z"
		}
        ...省略
	],
	"rootPath": "govendor-demo"
}

step3:常用命令组合

govendor init      ##初始化vendor

govendor list -v   ##查看vendor依赖

govendor add  -e   ##从GOPATH添加vendor未添加的依赖

govendor fetch -e  ##从GOPATH批量更新或添加vendor未添加的依赖

govendor sync      ##根据已有的vendor.json里面的依赖包信息。从远程拉取包到vendor目录下

 

 类似资料: