Go语言中的包管理工具之Go Vendor的使用

Go:go mod vendor 使用 Go:go mod vendor 使用 1.背景 我们基于 go mod 机制来管理我们项目的依赖库版本,其中 go.mod 记录了依赖库版本信息。 一般第三方依赖库(包括公司内网gitlab上的依赖库),其源码都不被包含在我们的项目内部,而是在编译的时候go连接公网、内网下载到本地GOPATH,然后编译。 问题是,有些时候需在无公网、无内网(无法连接内网gitlab)的情况下编译go项目,如何做呢? 在此时,需使用go mod vendor将项目的依赖库下载到项目内部,作为项目的一部分来编译。 PS: 阅读详情

GoLang 中常用的包管理的方式

  • 常用的有三种
    • Go Path
    • Go Vendor
    • Go Modules

关于 Go Vender


1 )概述

  • 在2015年的时候,我们的另一个包管理工具Go Vendor就诞生了
  • 它诞生于 2015.8.19 ,是在Go的 1.5 版本当中引入的,它默认是关闭的
  • 我们需要通过手动设置Go的环境变量来开启
    • GO15VENDOREXPERIMENT=1 开启
  • 在Go的1.6版本中,这个环境变量就被默认开启了
  • 在Go的1.7版本中, 它就作为功能支持,取消了这个环境变量的设置
  • 至此,Go Vendor 就成为Go里面的一个默认支持的包管理工具
  • 目前已不再推荐使用了

2 ) 原理

  • 本质上把源码拷贝到 vendor 目录下面
  • 通过 vendor 目录维护一个 vendor.json 的文件指定使用的包版本
    • 整个目录结构比较清晰,再同步到github的时候
    • 可以把代码直接全部包含到项目当中
    • 也可以通过 .gitignore 文件忽略依赖的库
    • 并通过 govendor sync 这个命令来进行同步

3 )常见用法

  • 官方文档:https://go.dev/blog/migrating-to-go-modules
  • 在使用Go Vendor之前,我们需要通过go get命令把 Go Vendor的工具下载下来
    • $ go get -u github.com/kardianos/govendor
  • 在我们的项目根目录下, 通过 govendor init就可以初始化一个Go Vendor的工程
  • 执行 govendor add +external 这个命令将我们项目的依赖全部都加到项目工程下面的这个vendor目录下面
  • 还可以通过 govender remove + unused,移除所有我们项目中不需要用到的依赖包
  • 当我们使用 govendor 作为包管理工具的时候,我们在编译go代码的时候
    • 会先从vendor目录中搜索依赖包
  • vendor目录中找不到的再到 Go Path 中查找,最后才是在Go Root中去查找
  • govendor 将第三方依赖包完全整合到工程里面,加快了项目构建速度
  • 特别是微服务CICD的流程中使用, gorender能使整个构建速度更快

4 ) 缺点

  • Go Vendor的缺点是包的依赖不能重用,使得包的冗余性提升
  • 对于一些依赖冲突也不能很好好的解决

5 ) 后续

  • 现在官方推荐的是通过Go Modules 的方式来管理依赖包
  • 但是有些旧的项目仍然使用Go Vendor的工具进依赖管理
go vendor包管理 go vendor包管理 go vendor简介 golang工程的依赖包经常用go get命令来获取, 会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep, govendor等。 go vendor 是go官方引入管理包依赖的方式。 安装与使用 安装 go get -u -v github.com/karadianos/govendor 使用 #进入到项目目录 cd /ho... 阅读详情

相关推荐

golang的import原理

描述 import是个很重要的东西,golang是怎么import的 import查找包的顺序? import的是什么,包还是路径? 自己项目中怎么import golang的包管理历史 第一阶段 早期golang,import是直接查找GOPATH/scr,GOPATH/scr,GOPATH/scr,GOROOT/scr目录 第二阶段 v1.5开始采用vendor模式,每个项目有一个vendor目录,存放依赖包 第三阶段 v1.12开始增加了go mod用于管理依赖包 部分学习资料比较早,

妙音 2674

【vendor】Go 包依赖管理工具govendor

Go 包依赖管理工具 —— govendorgovendor是一个基于vendor目录机制的包管理工具。支持从项目源码中分析出依赖的包,并从$GOPATH复制到项目的vendor目录下支持包的指定版本,并用进行包和版本管理,这点与 PHP 的Composer类似支持用命令从$GOPATH中复制依赖包如果忽略了vendor/*/文件,可用恢复依赖包可直接用添加或更新依赖包可用从其他vendor包管理工具中一键迁移到govendor。......

我的笔记本 9996

Go 学习笔记(69)— Go Modules 使用详解(设置GO111MODULE、设置代理、初始化项目、创建依赖项、回退依赖项版本、删除未使用的依赖项)

采用 Go Module 的方式,可以在任何位置创建你的 Go 语言项目。 假设你的项目位置是 /home/wohu/demo,打开终端,输入如下命令切换到该目录下: $ cd /home/wohu/demo 然后再执行如下命令创建一个 Go Module 项目: $ go mod init go_demo 执行成功后,会生成一个 go.mod 文件。然后在当前目录下创建一个 main.go 文件,这样整个项目目录结构是: wohu@wohu:~/demo$ tree . ├── go.mod ├──

wohu1104的专栏 2万+

【Go】Go 包管理 之 Go Vendor

本文介绍了go vender

weixin_44211968的博客 7816

21、Go语言的包管理

本文详细介绍了Go语言中的包管理机制和相关工具,包括go modules、vendor目录以及私有包的管理方法。涵盖了依赖项的获取、更新、锁定和构建流程,并结合最佳实践帮助开发者高效管理和维护项目依赖,确保项目的稳定性与可维护性。

ll5678的博客 79

大众点评商家及评分数据(2012-2025)

大众点评及商家评分数据库全面覆盖全国范围内多个城市的商户信息,涵盖餐饮、购物、休闲娱乐等多个消费领域,包含商家基础信息、地理坐标、分类体系、经营状态、用户评价、消费水平及服务设施等共计28个字段。

Sunny9qx的博客 2704

go import 指定分支_《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor

到目前位置我们一直在编写单文件代码,只有一个 main.go 文件。本节我们要开始朝完整的项目结构迈进,需要使用 Go 语言的模块管理功能来组织很多的代码文件。细数 Go 语言的历史发展,模块管理经历了三个重要的阶段。第一阶段是通过全局的 GOPATH 来管理所有的第三方包,第二阶段是通过 Vendor 机制将项目的依赖包局部化,第三阶段是 Go 语言的最新功能 Go Module。本节我们重点讲...

weixin_32770423的博客 1473

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制

本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。

svm4gardener的博客 793

《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor

到目前位置我们一直在编写单文件代码,只有一个 main.go 文件。本节我们要开始朝完整的项目结构迈进,需要使用 Go 语言的模块管理功能来组织很多的代码文件。细数 Go...

shellquery的博客 190

可微编程:当深度学习遇见物理定律,重塑科学计算新范式

本文探讨了可微编程如何将深度学习与物理定律相结合,重塑科学计算范式。通过自动微分技术,它将物理方程融入可微计算图,使模型在数据驱动的同时遵守物理约束。文章以神经常微分方程为例,阐述了其在连续系统建模、科学模拟器优化等领域的应用,并分析了当前面临的挑战与最佳实践路径。

weixin_29056145的博客 135

Hermes V0.10.0:官方UI几乎无Bug版

如果你还在观望Hermes,现在可能是最好的入局时机。 因为网页端来了,门槛降到了最低。 如果你已经是Hermes用户,升级就对了。 因为0.9.0的更新,值得一试。

weixin_66295112的博客 2047

go语言 第三方包安装方法_《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor...

到目前位置我们一直在编写单文件代码,只有一个 main.go 文件。本节我们要开始朝完整的项目结构迈进,需要使用 Go 语言的模块管理功能来组织很多的代码文件。细数 Go 语言的历史发展,模块管理经历了三个重要的阶段。第一阶段是通过全局的 GOPATH 来管理所有的第三方包,第二阶段是通过 Vendor 机制将项目的依赖包局部化,第三阶段是 Go 语言的最新功能 Go Module。本节我们重点讲...

weixin_39783771的博客 700

MTK 人工智能生态系统 <一> 简介

Neuropilot

New_Tank的博客 3498

vendor:go语言的包管理工具(小记)

vendor是go语言的一种包管理工具; 可以从go get -u github.com/kardianos/govendor下载govendor工具到本地。 注: govendor使用时,必须保证工程项目放在GOPATH/src目录下。 在Go命令行执行govendor init,自动生成vendor文件夹(存放你项目需要的依赖包)和vendor.json文件(有关依赖包的描述文件)。 这时你查看vendor.json文件时,可能还没有什么内容。此时你需要将GOPATH文件夹中的包添加到vendor目录下

code_feien的博客 523

Isaac Lab强化学习实战:用SO-ARM101机械臂实现抓取任务(附B站视频教程)

本文详细介绍了如何使用Isaac Lab强化学习框架,在SO-ARM101机械臂上实现抓取任务的完整实战流程。内容涵盖从环境搭建、奖励函数设计、训练调参到模型部署的各个环节,并分享了Sim-to-Real迁移的关键技巧,旨在帮助开发者高效完成机器人强化学习项目。

weixin_29070721的博客 1106

Allegro如何输出ODB文件操作指导

在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图。用Allegro如何输出ODB文件,具体操作如下。如何输出ODB文件操作指导。

weixin_54787054的博客 7216

Go 包管理

吐槽一下:好多Go教程讲了很多go语法各种框架,居然不讲包管理? 在 1.5 版本之前,所有的依赖包都是存放在 GOPATH 下,没有版本控制。(弊端就是无法实现包的多版本控制) 1.5 版本推出了 vendor 机制。所谓 vendor 机制,就是每个项目的根目录下可以有一个 vendor 目录,里面存放了该项目的依赖的 package。go build 的时候会先去 vendor 目录查找依赖,如果没有找到会再去 GOPATH 目录下查找。 1.9 版本推出了实验性质的 dep,后续没有继续使用.

skysys的研究小屋 1137

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

golang vendor包管理和go mod

go mod golang1.11版本添加了go mod来管理项目引用的第三方的包,并且可以和vendor互相切换。 保证go version在1.11以上。你的项目是不能直接在$GOPATH/src下的,但是可以在$GOPATH/src下再建立一个文件来作为项目根目录,或者在其他非$GOPATH/src的目录建立项目。我选择在$GOPATH/src/p1-dhh来作为项目根目录。 想要使用先学习...

qq_40896725的博客 8382

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

go build不从本地gopath获取_Go包管理GOPATH、vendor、go mod机制

简介Golang 作为开源编程语言,在 2012 年编程语言 Go 1 发布之后,一直在不断发展,并伴随着云原生而广泛进入各大公司。在互联网发展至今,软件系统不断膨胀。各个编程语言也都逐步支持了依赖包管理工具,从而加快软件迭代速度,提升整体研发效率。依赖包管理工具能够快速的使用公司内部的依赖模块或者开源库,极大的提升软件团队开发效率,减少迭代成本。Go 语言的包管理工具也伴随着开源...

weixin_33788465的博客 2425

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

golang 包管理

import // 相对路径导入 该文件同一目录的model模块 import "./model" // 绝对路径导入 $GOPATH/pkg/$GOOS/url/model import "url/model" import ( f "fmt" . "http" _ “sql" // 只想使用包中的init函数 ) vendor # 安装govendor go get -u -v gi...

firefly 959

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

go依赖包管理工具对比

写的挺清楚的,备份一下  转载于:https://www.studygolang.com/articles/10523  vendor一下 当开始真正用go去做项目的时候,不可避免的就会遇到依赖包的问题。go的依赖包管理与java+maven的依赖管理不太一样,我们从GOPATH开始逐渐理解其思想,然后再对比下目前常用的依赖包管理工具。 GOPATH和GOROOT 初学者很容易会被这两个

阿仆的专栏 2684

go 切换当前运行目录_Go的包管理工具(一)

在前面转载了系列文章:Golang 需要避免踩的 50 个坑,总得来说阅读量都挺大。今天这篇文章,咱们一起聊聊Go的依赖包管理工具。背景每一门语言都有其依赖的生态,当我们使用Java语言的时候,使用Maven或者Gradle管理包依赖。早期的Go被很多开发者所诟病的一个问题就是依赖包的管理。Golang 1.5 release版本的发布之前,只能通过设置多个GOPATH的方式来解决这个问...

weixin_33130113的博客 971
上一篇: Go语言中的包管理工具之Go Path的使用
下一篇: Go语言中的包管理工具之Go Modules的使用
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值