Go 工具链详解(七):模块缓存清理工具

go mod 缓存

在 Golang 中,模块是对一组版本化的包的集合的描述。Go 1.11 版本引入了模块支持,通过 go mod 命令提供了对模块的管理。Go 模块的一个重要特性是依赖管理,可以清晰地定义项目所依赖的模块及对应的版本,并确保代码使用正确的版本。

运行 go mod tidy 或 go mod download 命令时,Go 会检查 go.mod 文件中的依赖项,并先从缓存中查找。如果找不到,就会通过网络下载该模块并存储在缓存中(默认存储在 $GOPATH/pkg/mod 目录下面)。下次运行相同的命令时,Go 会直接使用缓存中的版本,除非强制要求更新到最新版本。这样就可以快速获取到依赖项,而不需要重新下载。

go mod 缓存的好处

  • 减少网络请求:模块第一次下载后会被缓存到本地,后续构建不需要再次下载。
  • 提高构建速度:直接从本地缓存中获取依赖项,可以显著提高构建速度。
  • 离线工作:因为模块缓存在本地,即使没有网络也依然可以进行构建。

go mod 缓存管理

可以使用 go mod 来管理模块缓存,常用命令如下:

  • go mod tidy:用来更新 go.mod 文件以确保所有的依赖包都被准确地记录下来,会添加缺失的模块,删除无用的模块。
  • go mod download:下载 go.mod 文件中指定的所有依赖包并缓存到本地。
  • go mod verify:检查依赖的完整性和正确性,会检查 go.sum 文件中的每个依赖是否存在,有没有被修改。
  • go mod vendor:将依赖项复制到项目的 vendor 目录下,这样可以不使用模块缓存进行构建。

缓存的注意事项

  • 缓存的模块是只读的,是为了确保模块的完整性和可重复性。
  • 如果直接修改了缓存中的文件,将无法保证构建的一致性。
  • 清理缓存可能会需要重新下载依赖项,可能会消耗额外的时间和带宽。

Go 模块缓存是一个很实用的特性,可以帮助开发者更高效地管理和构建项目。通过合理的缓存管理,可以确保依赖项的快速获取和项目的稳定构建。

清理缓存

go clean 是 Go 语言工具链的一部分,用于清除构建过程产生的文件和目录。这个命令主要用来移除当前包或模块的对象文件和缓存文件。

以下是 `go clean` 命令的一些常用选项和用法:

  • -i:除了清除构建产物外,还会删除相关的包和可执行文件。
  • -r:递归清除所有依赖包。
  • -n:打印将要执行的清除命令,而不实际执行。
  • -x:打印出执行的详细命令,用于调试或理解 go clean 在幕后做了什么。
  • -cache:清理构建缓存,但不会删除无用文件。构建缓存包括编译过程中生成的中间文件和对象文件。
  • -modcache:清理模块缓存。模块缓存包括在模块管理过程中下载的模块文件和依赖项信息。
  • -testcache:清理测试缓存。测试缓存包括在测试运行过程中生成的文件和状态。
  • -fuzzcache:删除存储在 Go 构建缓存中用于模糊测试的文件。模糊测试引擎缓存了那些扩展代码覆盖率的文件,因此删除缓存后可能会使模糊测试的效果降低。这些文件与存储在 testdata 目录中的文件不同,clean 命令不会删除 testdata 中的文件。

go clean 使用示例:

  • 清除当前包的对象文件
go clean
  • 清除特定包的对象文件:
go clean -i github.com/example/mylib
  • 清除模块缓存:
go clean -modcache
  • 清除编译和测试缓存:
go clean -cache -testcache
  • 递归清除所有依赖包的对象文件:
go clean -r ./...
  • 清除构建缓存中用于模糊测试的文件
go clean -fuzzcache

需要注意的是,go clean 会删除文件和目录,因此在使用前应当确保不会误删重要的数据。因为 go build 和其他一些命令会自动缓存构建和测试的结果,所以一般情况下不需要使用 go clean 命令。不过在某些情况下,例如磁盘空间紧张或者需要彻底清除所有构建产物以确保从干净状态开始构建时,go clean 就非常有用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电磁优化的并行空间映射方法

空间映射(SM)是一种公认的加速电磁优化的方法。现有的SM方法大多基于顺序计算机制。本文提出了一种用于电磁优化的并行SM方法。在该方法中,每次迭代开发的代理模型被训练以同时匹配多个点的精细模型。多点训练和SM使代理模型在比标准SM更大的邻域内有效。本文提出的…

[补题记录] Complete the Permutation(贪心、set)

URL:https://codeforces.com/group/OcmZ7weh45/contest/487583/problem/J 目录 Problem/题意 Thought/思路 Code/代码 Problem/题意 给出一个长度为 N 的序列,其中的元素都是奇数。 现在要求在两个奇数之间插入一个偶数,使得这三个数递增…

信息压缩模型在自然语言处理中的应用和探讨

信息压缩模型在自然语言处理中的应用和探讨 摘要:正文:结论:附录:摘要: 随着人工智能和深度学习的发展,自然语言处理(NLP)在信息处理中的角色变得越来越重要。然而,海量的自然语言数据为信息处理带来了挑战——更多的信息通常意味着更高的处理成本,并可能导致效率降低。为…

一个工具让你明白“万丈高楼平地起”,拒绝重复造轮子!

大家在公司工作当中是不是很多时间装环境很麻烦,一个项目要上线了,开始网上搜了一边又一遍的环境搭建教程?等到下一个项目要上线了,又上网上搜了一边又一遍的环境搭建教程。关键天花乱坠的互联网,找不到很靠谱的呀。有…

数组的移动

设计程序&#xff0c;给定包含N个整数的数组array&#xff0c;实现操作&#xff1a;前面各个整数顺序向后移动m个位置&#xff0c;最后的m个整数移动到最前面。方法&#xff1a;void move(int array[], int n,int m ) 输入要求 第一行输入两个整数N(1<N<1e6)和m(0<m&…

webpack 配置

1、基础配置 // node js核心模塊 const path require(path) // 插件是需要引入使用的 const ESLintPlugin require(eslint-webpack-plugin) // 自动生成index.html const HtmlWebpackPlugin require(html-webpack-plugin); // 将css文件单独打包&#xff0c;在index.html中…

如何做好项目管理?年薪百万项目大佬一直在用这11张图

大家好&#xff0c;我是老原。 日常工作中&#xff0c;我们会遇到各种大大小小的工作项目&#xff0c;如何能让项目保质保量的完成&#xff0c;是我们项目经理的目标。 项目管理的流程可以说是由一系列的子过程组成的&#xff0c;它是一个循序渐进的过程&#xff0c;所以不能…

python数字

目录 整数&#xff08;如&#xff0c;2、4、20 &#xff09;的类型是 int&#xff0c;带小数&#xff08;如&#xff0c;5.0、1.6 &#xff09;的类型是 float。 Python 用 ** 运算符计算乘方 1&#xff1a; 等号&#xff08;&#xff09;用于给变量赋值。 解释器像一个简单…

进程API

linux下进程的api forkwaitexec fork #include <stdio.h> #include <stdlib.h> #include <unistd.h>/* linux环境运行 子进程并不是完全拷贝了父进程。具体来说&#xff0c;虽然它拥有自己的 地址空间&#xff08;即拥有自己的私有内存&#xff09;、寄存器…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景&#xff1a; 二、实际示例&#xff1a; 三、解决方案&#xff1a; 1. Delphi 代码&#xff1a; 2. javaScript代码&#xff1a; 一、问题背景&#xff1a; 在用Delphi开发程序&#xff0c;无论是移动端还是PC端&#xff0c;都可以很方便的使用TWebBrows…

Postman如何使用(一):导入导出和发送请求查看响应

一、Postman如何导入导出打包的应用 在Postman中导入导出我们的 测试数据包 和 工作环境 非常的方便&#xff1a; 导出数据包的方法如下&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的自动化测试教程…

七天.NET 8操作SQLite入门到实战 - 第三天SQLite快速入门

前言 今天我们花费一个小时快速了解SQLite数据类型、SQLite常用命令和语法。 七天.NET 8操作SQLite入门到实战详细教程 第一天 SQLite 简介第二天 在 Windows 上配置 SQLite环境 EasySQLite项目源码地址 GitHub地址&#xff1a;https://github.com/YSGStudyHards/EasySQLite&…

第一百七十六回 如何创建渐变色边角

文章目录 1. 概念介绍2. 实现方法3. 代码与细节3.1 示例代码3.2 代码细节 4. 内容总结 我们在上一章回中介绍了"如何创建放射形状渐变背景"相关的内容&#xff0c;本章回中将介绍"如何创建渐变色边角".闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

2023-11-22 LeetCode每日一题(网格中的最小路径代价)

2023-11-22每日一题 一、题目编号 2304. 网格中的最小路径代价二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中&#xff0c;从一个…

一石激起千层浪,有关奥特曼被炒的消息引发了一场热烈的讨论

在毫无征兆的情况下&#xff0c;OpenAI CEO山姆-奥特曼被炒了。 一石激起千层浪&#xff0c;有关奥特曼被炒的消息引发了一场热烈的讨论。 有人将其看成是一场「宫斗」&#xff0c;有人将其看成是OpenAI的董事会与创始人们的一次纠偏。 无论如何&#xff0c;这样一件看似并无…

网工内推 | 合资公司网工,CCNP/HCIP认证优先,朝九晚六

01 中企网络通信技术有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、按照工作流程和指引监控网络运行情况和客户连接状况&#xff1b; 2、确保各监控系统能正常运作&#xff1b; 3、快速响应各个网络告警事件&#xff1b; 4、判断出网络故障&#xff0c;按…

数据要素:数字经济最核心的资源。(存储,流通,使用)数据资产的价值量化评估,数据要素的特点

目录 数据要素:数字经济最核心的资源。(存储,流通,使用) 数据资产的价值量化评估

浅谈对于Android CMakeLists文件的理解

文章目录 文件结构 文件结构 cmake_minimum_required(VERSION 3.10.2) //设置cmake版本set(CMAKE_LIBRARY_OUTPUT_DIRECTORY${CMAKE_CURRENT_LIST_DIR}/../jniLibs/${ANDROID_ABI}) //设置.so文件输出路径 project("add") //编译目录add_library( common //生成.so文…

【Linux虚拟内存的配置】

设置Linux虚拟内存 注意:在做项目时&#xff0c;电脑内存不够用,怎么办? 这里给大家提供了一种解决方案,用磁盘换内存,具体如下: 虚拟内存swap介绍 如果你的服务器的总是报告内存不足&#xff0c;并且时常因为内存不足而引发服务被强制kill的话&#xff0c;在不增加物理内…