3.go-mod依赖管理

2023-10-27

系列文章目录

提示:文章写的差不多的时候补上



前言

go 语言项目中对于第三方库和插件采用go mod 的方式管理go 工程依赖的包。


一、go mod 文件介绍

# 指定模块名
module godemobuild(模块名字,工程名)

# go  sdk 版本
go 1.19

// 当前module(项目)依赖的包
require (    
    // 依赖包   版本    
    //dependency latest
)


// 排除第三方包。
exclude (
    //排除依赖包名字   版本
    dependency      latest
)

//替换
// 第三方库下载路径的替换
// 修改依赖包的路径或版本
// 1. 依赖包发生迁移
// 2. 原始包无法访问(需要代理)
// 3.使用本地包替换原始包(重写了第三方库,需要本地包)

replace (     
    //源路径 版本  替换 目标的版本     
    source latest => target latest
)


// 撤回
// 当前项目作为其它项目的依赖的时候;如果某个版本出现问题,撤回该版本。

retract (     
    //版本号     
    v1.0.0
  )

二、go mod 常用命令

1.常用命令总结

命令如下(示例):

#1. 将模块下载到本地缓存,需要指定模块路径及版本号
// 本地缓存位置 GOPATH=E:\GOwork\path\pkg
go  mod  download

# 例如  下载当前包不会下载相关的依赖
go mod download github.com/gin-gonic/gin@v1.9.0


# 2. 初始化一个新的模块到当前目录
go mod init

# 例如
go  mod init gomodcase

# 3. 添加缺少的依赖,删除未使用的依赖
go  mod tidy

# 4. 通过工具或脚本编辑go.mod
go mod edit
# 例如
# 添加依赖
go mod edit -require="github.com/tin-gonic/gin@v1.90"

# 替换路径,old[@version] 替换成 new[@version]
go mod edit -replace="golang.org/x/crypto@v0.0.0=github.com/golang/crypto@latest"

# 排除第三方依赖的某个版本

go mod edit -exclude="github.com/gin-gonic/gin@v1.9.0"

# 当前项目作为其他项目的依赖时,添加撤回版本用于排除有问题的版本
go mod edit -retract="v1.0.0"
go mod edit -retract="v1.1.0"

# 删除撤回版本记录
go mod edit -dropretract="v1.0.0"

# 根据go.mod 中的依赖制作vendor副本
# 有了vendor 副本,项目将不在依赖本地缓存

go mod vendor

# 验证依赖是否正确
go mod verify

# 返回对指定模块的依赖关系最短路径,解释为生命依赖指定包
go mod why 
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.go mod 中最常用命令

代码如下(示例):

go  mod tidy
比如下载里一个新的项目使用该命令就会把响应的依赖全部下载下来

# 初始化一个新的模块到当前目录
go mod init

3. 常用命令

# go install 安装可执行插件
#例如
    go install github.com/google/gops@latest
    
 # go get 获取模块信息并更新go.mod文件
 # 若本地缓存没有该模块,则下载模块; 若有则直接引用
 # 例如
 go get github.com/gin-gonic/gin@v1.9.0
 
 # go get -u 更新模块依赖,并更新go.mod
 go get github.com/jgin-gonic/gin@v1.9.0
 
 # go clean 清理临时目录中的文件
 # 例如 : 清理整个module 下载的缓存文件
 go clean -modcache

总结

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3.go-mod依赖管理 的相关文章

  • Golang 正则表达式命名组和子匹配

    我正在尝试匹配正则表达式并获取匹配的捕获组名称 当正则表达式仅与字符串匹配一次时 这是有效的 但如果它与字符串匹配多次 SubexpNames不返回重复的名称 这是一个例子 package main import fmt regexp fu
  • Golang GAE - 小胡子结构中的 intID

    这是一个Example https www dropbox com sh ur2ws1jnik6euef PjVJSwDTUc Blog Golang zip该应用程序的 关键代码在 golang code handler handler
  • 模板中的 bson.ObjectId

    我有一个具有 bson ObjectId 类型的结构 例如如下所示 type Test struct Id bson ObjectId Name string Foo string 我想在 html 模板中呈现它 Name Food a h
  • 为什么 Go 禁止取 (&) 映射成员的地址,却允许取 (&) 切片元素?

    Go 不允许获取地图成员的地址 if I do this p mm abc Syntax Error cannot take the address of mm abc 理由是 如果 Go 允许使用此地址 那么当地图后台存储增长或缩小时 该
  • 这两种方式哪一种是惯用的方式? time.Sleep() 还是自动收报机?

    我必须每分钟执行一些语句 我不确定我应该遵循以下哪一项 如果有人能解释内存和 CPU 方面的优缺点 那就太好了 时间 Sleep func main go func for time Sleep time Minute fmt Printl
  • 为什么我不能将左大括号放在下一行?

    当我尝试编译以下代码时遇到奇怪的错误 package main import fmt fmt func main var arr 3 int for i 0 i lt 3 i fmt Printf d arr i 错误如下 unexpect
  • 如何将 SQLite 数据库捆绑到 Go 二进制文件中?

    我尝试使用 go bindata 和 packr 但这些包没有显示如何将 SQLite 数据库文件打包到二进制文件中 我不需要以任何方式更新数据库 我只想在启动时从中读取数据 如何将 SQLite 数据库文件嵌入到 Go 二进制文件中 SQ
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何在golang中创建一个充满“000000...”数据的10MB文件?

    我打算在日志或磁盘队列等系统中使用 fdatasync 首先是在 ext4 等文件系统中创建一个带有 000000 的 10MB 文件 但我不知道如何正确地做到这一点 jnml fsc r630 src tmp SO 16797380 ls
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • Golang:带有 JSON 负载的 http.NewRequest POST 返回错误 500

    我正在开发一个 API 库 有一个API端点 POST 当您发出curl命令时 它是 curl H X API TOKEN API TOKEN http interest graph getprismatic com text topic
  • 将 time.Time 转换为字符串

    我正在尝试将数据库中的一些值添加到 string在围棋中 其中一些是时间戳 我收到错误 无法在数组元素中使用 U Created date 类型 time Time 作为类型字符串 我可以转换吗time Time to string typ
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • select 语句是否保证通道选择的顺序?

    继从这个答案 https stackoverflow com a 25795236 274460 如果一个 goroutine 在两个通道上进行选择 是否保证通道的选择顺序与其发送的顺序相同 我对发送者是单线程的情况特别感兴趣 例如 是否保
  • 为什么 gmail API 以纯文本形式发送 html 电子邮件?

    我正在尝试使用 gmail API 发送 html 电子邮件 但由于某些原因 它会随机以纯文本 文本形式发送电子邮件 谷歌似乎改变了我设置的内容类型标头 这有什么理由吗 电子邮件内容始终完全相同 正如我测试的那样 API 仍处于实验阶段吗
  • 实现具有更广泛方法签名的接口

    在Go中 是否有一种方法可以使用方法来实现接口 其中实现中相应方法的返回类型 比 预期返回类型 更宽 这很难解释 所以这里有一个例子 在 Go Playground 中运行以下示例代码时出现此错误 prog go 36 14 cannot
  • Facebook服务器端登录、CORS

    我正在实现一个带有 FB 服务器端登录的网站 简化步骤如下 一个简单的按钮触发 JS 脚本 该脚本调用我的后端 APIhttps localhost fblogin function sendFbLoginData get https lo
  • 使用泛型:类型参数 T 不能与 == 进行比较

    我正在操场上玩 Go Generics 尝试编写一些通用数组函数 https gotipplay golang org p vS7f Vxxy2j https gotipplay golang org p vS7f Vxxy2j packa
  • 测试 gRPC 服务

    我想测试用 Go 编写的 gRPC 服务 我使用的示例是 Hello World 服务器示例grpc go 仓库 https github com grpc grpc go blob master examples helloworld g
  • 将中间件与 Golang Gorilla mux 子路由器结合使用

    如何将中间件应用到 Go 中大猩猩工具包 http www gorillatoolkit org 多路复用器子路由器 我有以下代码 router mux NewRouter StrictSlash true apiRouter router

随机推荐

  • sql_model

    关于sql mode sql mode是MySQL数据库中的一个环境变量 定义了mySQL应该支持的SQL语法 数据校验等可以通过select sql mode 查看当前数据库使用的sql mode 查看当前数据库的sql mode sel
  • 汉字统计

    题目 统计给定文本文件中汉字的个数 输入格式 输入文件首先包含一个整数n 表示测试实例的个数 然后是n段文本 输出格式 对于每一段文本 输出其中的汉字的个数 每个测试实例的输出占一行 Hint 从汉字机内码的特点考虑 数据范围 无 样例输入
  • Js 逆向:微博登录

    1 先分析参数 su sp是必要的 其中su是加密后的账号 很简单就是个bs64 不再说了 2 直接搜参数 这个时候要搜代表性的 特殊的 例如pwencode 很好只有一个 两种加密 一个是RSA 一个是sha 这里判断用的是RSA 3 直
  • VUE的认识及基础语法

    VUE的认识及基础语法 我们先来了解一下什么是VUE 什么是渐进式 库 插件和框架的区别 vue从而出现了一种开发模式那就是mv 插值表达式的使用 指令 关于属性 循环 v model 自定义指令 过滤器 修饰符 v on 指令常用修饰符
  • 光线追踪(ray tracing)介绍与细节推导

    背景 最近因为找到关于光线追踪相关不错的教程 所以边学习边做记录并希望将相关资料进行分享 光线追踪作为计算机图形学中一种可以获得良好的效果的渲染算法 有着非常广泛的应用 历史背景相关的介绍可参考百度百科或者维基百科 本文中的参考资料来自于P
  • 【爬虫】JS逆向解决反爬问题系列5—sign破解

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 本次博客内容将讲解关于sign
  • COM基础

    曾经看过潘老师的 lt
  • GPT2-Chinese:中文的GPT2训练代码

    推荐一个中文的GPT2项目 Chinese version of GPT2 training code using BERT tokenizer 作者提供了一份中文的GPT2训练代码 使用BERT的Tokenizer 可以写诗 新闻 小说
  • 液位系统c语言程序,超声波自动测量物体液位系统的设计

    超声波自动测量物体液位系统的设计 任务书 毕业论文15000字 摘要 本系统以STC89C52单片机为核心 通过硬件电路连接和软件程序的编写实现通用型超声波自动测量物体液位系统的设计 其主要原理是由单片机控制超声波发射电路发射超声波 超声波
  • win10手动添加程序到右键菜单/右键以pycharm project方式打开文件夹

    这次主要原因是在安装pycharm时 没选择将pycharm加入右键菜单 以至于无法选定文件夹作为pycharm项目打开 每次都需要打开pycharm 加载一个自己不需要的项目 再从pycharm里打开自己想要的 就去查了一下在win10里
  • 支付宝&微信个人收款支付系统解决方案

    原文链接 对于个人收款支付系统 由于没有营业执照 微信 支付宝官方提供的接口无法使用 个人二维码收款又无法完成支付系统后续工作 这个问题一直以来都没有找到一个适合的解决方案 经过不断尝试 最终找到了一个非常好用的第三方工具来解决这个问题 G
  • 决策树和朴素贝叶斯

    决策树 热力第二 物理 熵 混沌 系统越大 越乱 越看不懂 混乱度越大 熵越大 gt 熵增 容器 容器有个隔板 一边是氧气 一边是氮气 gt 熵 信息论 计算机是二进制 信息熵 中华民族9万个汉字 有多少本书 都是用9万个汉字排列 7000
  • Vue+iview表单验证失效

    iview表单验证的步骤 第一步 给 Form 设置属性 rules rules 第二步 同时给需要验证的每个 FormItem 设置属性 prop 指向对应字段即可 prop 第三步 注意 Form标签里面是 model 第四步 注意 在
  • 项目管理-进度网络图

    项目管理 网络图 一 网络图 1 1 分类 1 1 1 单代号网络图 节点型 1 2 2 双代号网络图 箭线型 1 2 逻辑关系 1 3 提前量和滞后量 1 4 关键路径法 Critical Path Method 1 5 基本概念 二 七
  • c语言c++新手题目a+b a*b

    两个变量之间的基本运算是学习c语言必不可少的入门题目 a b的求和意思是定义两个任意变量并输出他们的和 a b同理 开始写代码之前需要先了解c语言中各种符号的意思 所有的 C 语言程序都需要包含 main 函数 代码从 main 函数开始执
  • web端测试常见BUG总结

    原文 https www jianshu com p 4c7daac31c0f 一 缺少非空判断 服务器报500错误 编辑包含多个字段的页面时 有一些字段在程序中控制是必填的 事先未知 但是提交时没有任何说明提示 当不填写这些字段 直接保存
  • Java程序中Doc(文档)注释详解

    许多人写代码时总不喜欢写注释 每个程序员如此 嘿嘿 我也一样 不过 话说回来 该写还是要写哦 没人会喜欢一个不写注释的程序员 当然 也没有一个喜欢写注释的程序员 今天 我们就来说说Java注释之一 Doc注释 我们知道 Java支持 3 种
  • angular的ng-model指令

    div 名字 div
  • json单引号和双引号转义 完美解决由特殊字符引起的json解析错误(转载)

    原文链接 最近遇到json串里的内容包含单引号导致不能正常解析 使用html转义字符代替单引号 双引号等 即可解决 str str replaceAll 39 IE暂不支持单引号的实体名称 而支持单引号的实体编号 故单引号转义成实体编号 其
  • 3.go-mod依赖管理

    系列文章目录 提示 文章写的差不多的时候补上 略 文章目录 系列文章目录 前言 一 go mod 文件介绍 二 go mod 常用命令 1 常用命令总结 2 go mod 中最常用命令 3 常用命令 总结 前言 go 语言项目中对于第三方库