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

相关推荐

  1. Go语言管理工具Go Modules使用

    2023-12-30 13:54:07       43 阅读
  2. Go语言管理工具Go Vendor使用

    2023-12-30 13:54:07       44 阅读
  3. Go语言管理工具Go Path详解

    2023-12-30 13:54:07       38 阅读
  4. Go语言bufio使用

    2023-12-30 13:54:07       32 阅读
  5. 前端开发常用管理工具

    2023-12-30 13:54:07       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 13:54:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 13:54:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 13:54:07       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 13:54:07       20 阅读

热门阅读

  1. K8s-安全机制

    2023-12-30 13:54:07       28 阅读
  2. Thinkphp 5框架学习

    2023-12-30 13:54:07       45 阅读
  3. js中的 == 比较规则

    2023-12-30 13:54:07       37 阅读
  4. 深度学习:走向智能时代的引擎

    2023-12-30 13:54:07       35 阅读
  5. C语言浮点类型、值和精度范围

    2023-12-30 13:54:07       42 阅读
  6. 油猴脚本开发,之如何添加html和css

    2023-12-30 13:54:07       42 阅读
  7. ArkTS语言基础入门学习-鸿蒙开发

    2023-12-30 13:54:07       37 阅读
  8. 安装驱动导致ubuntu开不了机

    2023-12-30 13:54:07       36 阅读