当前位置: 首页 > news >正文

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

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的工具进依赖管理

相关文章:

  • Ajax学习
  • 2023-12-29 服务器开发-centos部署ftp
  • docker-compose 安装gitlab
  • badcase 探索与召回分析
  • C++ Primer Plus----第十二章--类和动态内存分布
  • npm 抽取 解析(持续更新中)
  • jdk8升级JDK17避坑指南
  • 大创项目推荐 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv
  • 本地映射测试环境域名,解决登录测试环境后,也可以使用本地域名访问,可以正常跑本地项目
  • k8s之陈述式资源管理
  • 八、typescript 高级类型与模块
  • 【每日一题】LeetCode206.反转链表
  • Python圣诞树代码
  • 【UML】第12篇 序列图(1/2)——基本概念和构成
  • [数据结构]树与二叉树的性质
  • 「面试题」如何实现一个圣杯布局?
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CODING 缺陷管理功能正式开始公测
  • C语言笔记(第一章:C语言编程)
  • ES6系统学习----从Apollo Client看解构赋值
  • jQuery(一)
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • October CMS - 快速入门 9 Images And Galleries
  • Odoo domain写法及运用
  • Python实现BT种子转化为磁力链接【实战】
  • Vue 动态创建 component
  • 彻底搞懂浏览器Event-loop
  • 给初学者:JavaScript 中数组操作注意点
  • 工作中总结前端开发流程--vue项目
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聚簇索引和非聚簇索引
  • 利用DataURL技术在网页上显示图片
  • 前端设计模式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 我建了一个叫Hello World的项目
  • 运行时添加log4j2的appender
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 责任链模式的两种实现
  • 正则表达式小结
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 计算机视觉入门
  • #pragma 指令
  • #考研#计算机文化知识1(局域网及网络互联)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)鸿鹄云架构一服务注册中心
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)80c52学习之旅-起始篇
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)