当前位置: 首页 > 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的工具进依赖管理

相关文章:

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

GoLang 中常用的包管理的方式 常用的有三种 Go PathGo VendorGo Modules 关于 Go Vender 1 )概述 在2015年的时候,我们的另一个包管理工具Go Vendor就诞生了它诞生于 2015.8.19 ,是在Go的 1.5 版本当中引入的,它默认是关闭的我…...

QString设置小数点精度位数

QString设置小数点精度位数 Chapter1 QString设置小数点精度位数Chapter2 Qt中QString.toDouble有效位数6位问题以及数据小数点有效位数的处理问题一:QString.toDouble有效位只有6位问题二:小数点有效位数的问题 Chapter3 qt QString转Double只显示6位数字的问题(精…...

基于Java驾校预约管理系统

基于Java的驾校预约管理系统是一个为驾校提供在线预约服务的系统。该系统利用Java编程语言,采用SSM框架,并使用MySQL数据库进行开发。 这个系统主要有三个角色:用户、教练和管理员。 用户可以注册和登录系统,查看驾校的公告信息…...

C++面向对象高级编程(侯捷)笔记2

侯捷C面向对象高级编程 本文是学习笔记,仅供个人学习使用,如有侵权,请联系删除。 如果你对C面向对象的组合、继承和委托不了解,对什么是拷贝构造、什么是拷贝赋值和析构不清楚,对类设计中的Adapter、pImpl、Template…...

双曲正弦函数(*) 优化麦克劳林公式

#include<stdio.h> #include<math.h> int main() {double x,eps,i3,y,item;scanf("%lf%lf",&x,&eps);yx;itemx;while(fabs(item)>eps){itemitem*x*x/i/(i-1);i2;yitem;}printf("%.6f\n",y);return 0; }...

无监督关键词提取算法:TF-IDF、TextRank、RAKE、YAKE、 keyBERT

TF-IDF TF-IDF是一种经典的基于统计的方法&#xff0c;TF(Term frequency)是指一个单词在一个文档中出现的次数&#xff0c;通常一个单词在一个文档中出现的次数越多说明该词越重要。IDF(Inverse document frequency)是所有文档数比上出现某单词的个数&#xff0c;通常一个单词…...

web3 : blockscout剖析

Blockscout 是第一个功能齐全的开源区块链浏览器,可供任何以太坊虚拟机 (EVM) 链使用。项目方可以下载并使用Blockscout作为其链的浏览器,用户可以轻松验证交易、余额、区块确认、智能合约和其他记录。 目录 Blockscout可以做什么主要特征blockscoutDocker容器组件Postgres 1…...

【机器学习基础】DBSCAN

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;相对完整的机器学习基础教学&#xff01; ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战…...

计算机硬件 4.4键盘与鼠标

第四节 键盘与鼠标 一、认识键盘 1.地位&#xff1a;计算机系统最基本的输入设备。 2.外观结构&#xff1a;面板、键帽、底盘、数据线。 3.组成键区&#xff1a;主键区、功能键区、辅助键区和编辑&#xff08;控制&#xff09;键区。 二、键盘分类 1.按接口分 ①AT口&…...

Flappy Bird QDN PyTorch博客 - 代码解读

Flappy Bird QDN PyTorch博客 - 代码解读 介绍环境配置项目目录结构QDN算法重要函数解读preprocess(observation)DeepNetWork(nn.Module)BirdDQN类主程序部分 介绍 在本博客中&#xff0c;我们将介绍如何使用QDN&#xff08;Quantile Dueling Network&#xff09;算法&#xf…...

听GPT 讲Rust源代码--compiler(9)

File: rust/compiler/rustc_trait_selection/src/traits/select/mod.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_trait_selection/src/traits/select/mod.rs文件的作用是实现Rust编译器的trait选择器。 首先&#xff0c;让我们逐个介绍这些struct的作用&#xff1a; Se…...

Go语言中关于go get, go install, go build, go run指令

go get go get 它会执行两个操作 第一个, 是先将远程的代码克隆到Go Path的 src 目录那二个, 是执行go install命令 那如果指定的包可以生成二进制文件那它就会把这个二进制文件保存到这个 Go Path 的bin目录下面这是 go install 命令执行的操作 如果只需要下载包&#xff0c…...

石头剪刀布游戏 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 石头剪刀布游戏有 3 种出拳形状: 石头、剪刀、布。分别用字母 A,B,C 表示游戏规则: 出拳形状之间的胜负规则如下: A>B; B>C; C>A; 左边一个字母,表示相对优势形状。右边一个字母,表示相对劣势形状。…...

【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器中有32块硬盘&#xff0c;组建了3组RAIDZ&#xff0c;部分磁盘作为热备盘。zfs文件系统。 服务器故障&#xff1a; 服务器运行中突然崩溃&#xff0c;排除断电、进水、异常操作等外部因素。工作人员将服务器重启后发现无法进入操作系统。…...

C# 反射的终点:Type,MethodInfo,PropertyInfo,ParameterInfo,Summry

文章目录 前言反射是什么&#xff1f;常用类型操作SummryPropertyInfoMethodInfo无参函数运行 有参函数运行,获取paramterInfo 总结 前言 我之前写了一篇Attribute特性的介绍&#xff0c;成功拿到了Attribute的属性&#xff0c;但是如果把Attribute玩的溜&#xff0c;那就要彻…...

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…...

谷歌推出创新SynCLR技术:借助AI生成的数据实现高效图像建模,开启自我训练新纪元!

谷歌推出了一种创新性的合成图像框架&#xff0c;这一框架独特之处在于它完全不依赖真实数据。这个框架首先从合成的图像标题开始&#xff0c;然后基于这些标题生成相应的图像。接下来&#xff0c;通过对比学习的技术进行深度学习&#xff0c;从而训练出能够精准识别和理解这些…...

Vue2中使用echarts,并从后端获取数据同步

一、安装echarts npm install echarts -S 二、导入echarts 在script中导入&#xff0c;比如&#xff1a; import * as echarts from "echarts"; 三、查找要用的示例 比如柱状图 四、初始化并挂载 <template><div id"total-orders-chart" s…...

【Redux】自己动手实现redux-thunk

1. 前言 在原始的redux里面&#xff0c;action必须是plain object&#xff0c;且必须是同步。而我们经常使用到定时器&#xff0c;网络请求等异步操作&#xff0c;而redux-thunk就是为了解决异步动作的问题而出现的。 2. redux-thunk中间件实现源码 function createThunkMidd…...

ElasticSearch使用Grafana监控服务状态-Docker版

文章目录 版本信息构建docker-compose.yml参数说明 创建Prometheus配置文件启动验证配置Grafana导入监控模板模板说明 参考资料 版本信息 ElasticSearch&#xff1a;7.14.2 elasticsearch_exporter&#xff1a;1.7.0&#xff08;latest&#xff09; 下载地址&#xff1a;http…...

信号净化实战:从基础平滑到智能去噪

1. 信号净化入门&#xff1a;为什么我们需要处理噪声&#xff1f; 第一次接触传感器数据时&#xff0c;我被现实狠狠上了一课——实验室里漂亮的平滑曲线在真实场景中根本不存在。记得去年处理工厂振动传感器数据时&#xff0c;原始信号看起来就像心电图叠加了摇滚乐节奏。这种…...

Adafruit Bluefruit LE模块AT命令实战:从BLE透传到Eddystone信标与HID设备开发

1. 项目概述与核心价值如果你正在开发一个需要无线连接功能的物联网设备、可穿戴设备或者创意交互项目&#xff0c;那么蓝牙低功耗&#xff08;BLE&#xff09;技术几乎是一个绕不开的选择。它功耗低、连接快&#xff0c;并且被现代智能手机和电脑广泛支持。然而&#xff0c;直…...

终极指南:如何快速将AIO Sandbox与主流AI框架集成(LangChain、OpenAI Assistant等)

终极指南&#xff1a;如何快速将AIO Sandbox与主流AI框架集成&#xff08;LangChain、OpenAI Assistant等&#xff09; 【免费下载链接】sandbox All-in-One Sandbox for AI Agents that combines Browser, Shell, File, MCP and VSCode Server in a single Docker container. …...

【DeepSeek Chat功能测试全链路指南】:20年AI工程师亲测的7大核心场景验证法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek Chat功能测试的底层逻辑与验证哲学 DeepSeek Chat 的功能测试并非仅面向接口响应的“黑盒点击”&#xff0c;而是建立在模型行为可解释性、推理路径可追溯性与系统边界可控性三重基石之上的验…...

AI应用成本监控实战:基于令牌预算的LLM API调用管理与优化

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是那些基于大语言模型API&#xff08;比如OpenAI、Anthropic、Claude等&#xff09;的项目时&#xff0c;有一个痛点越来越明显&#xff1a;成本控制。你写了个聊天机器人&#xff0c;或者搞了个自动摘要工具&#x…...

【限时开放】Midjourney未来主义风格权威认证路径:完成这5个里程碑任务,获取由Adobe+MJ Labs联合签发的Futurism Prompt Architect证书

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;【限时开放】Midjourney未来主义风格权威认证路径&#xff1a;完成这5个里程碑任务&#xff0c;获取由AdobeMJ Labs联合签发的Futurism Prompt Architect证书 什么是未来主义Prompt架构师认证&#xf…...

嵌入式GUI设计:资源受限下的高效人机交互实践

1. 嵌入式GUI设计的核心挑战与价值定位在咖啡机、车载仪表、医疗设备等嵌入式系统中&#xff0c;图形用户界面(GUI)承担着人机交互的关键桥梁作用。与桌面端或移动端GUI不同&#xff0c;嵌入式GUI面临三大独特约束&#xff1a;首先&#xff0c;硬件资源极度受限——典型嵌入式处…...

OpenFold实战指南:在Linux系统部署蛋白质结构预测模型

1. 从仰望到上手&#xff1a;OpenFold如何让蛋白质结构预测走进寻常实验室去年AlphaFold2横空出世&#xff0c;几乎以一己之力解决了困扰生物学界半个世纪的“蛋白质折叠问题”&#xff0c;其意义不亚于在生命科学领域投下了一颗重磅炸弹。一时间&#xff0c;无论是结构生物学家…...

好的、坏的、丑陋的:神经网络的记忆

原文&#xff1a;towardsdatascience.com/the-good-the-bad-an-ugly-memory-for-a-neural-network-bac1f79e8dfd |人工智能|记忆|神经网络|学习| https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1e1ee7fbb30819e6f820f4d17dcd3b74.png 由…...

2026年国内数字人平台推荐:有哪些创作者与企业的高效创作利器?

一、引文/摘要在数字人领域&#xff0c;制作成本高、技术门槛高、生产效率低已成为内容创作的核心痛点。 2026年&#xff0c;AI数字人市场持续扩张&#xff0c;创作者与企业对低成本、易上手、全链路的数字人解决方案需求激增。但市场平台繁杂&#xff0c;功能与技术差异显著&a…...