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

【gopher的java学习笔记】依赖管理方式对比(go mod maven)

什么是go mod

go mod是Go语言官方引入的模块管理工具,旨在简化项目依赖管理,提高构建的可重复性和稳定性。以下是关于go mod的详细介绍:
在go mod之前,Go语言主要依赖GOPATH和vendor目录来管理项目依赖。然而,这种方式存在一些问题,如依赖关系不明确、版本冲突难以解决、依赖更新困难等。为了解决这些问题,Go语言从1.11版本开始引入了go mod,提供了一个简单、高效、标准化的依赖管理方案。

go mod的主要功能

  1. 依赖管理:go mod通过go.mod文件记录项目的依赖关系,包括依赖包的名称、版本和校验和等信息。
  2. 自动下载:在构建项目时,go mod会自动下载所需的依赖包,并缓存到本地目录,避免重复下载。
  3. 版本控制:go mod支持语义化版本控制,可以精确指定依赖包的版本,确保项目的稳定性和可维护性。
  4. 依赖校验:go mod通过go.sum文件记录每个依赖包的哈希值,在构建时校验依赖包的完整性,防止恶意篡改。

常用命令

  • go mod init:初始化模块,生成go.mod文件。
  • go mod tidy:整理项目的依赖关系,添加缺失的依赖,移除不再需要的依赖。
  • go mod graph:打印项目的依赖关系图。
  • go mod verify:校验依赖的完整性,确保go.mod文件和go.sum文件的一致性。
  • go mod edit:编辑go.mod文件,如修改依赖版本等。

什么是maven

  • 定义:Maven是一个基于POM(Project Object Model,项目对象模型)概念的项目管理和构建工具。它通过对项目构建、报告和文档进行集中化管理,帮助开发者简化项目构建、依赖管理和项目信息管理等工作。
  • 核心文件:Maven项目的核心配置文件是pom.xml,该文件用于定义项目的基本信息、依赖关系以及相关的构建任务和插件。

maven的主要功能

  1. 依赖管理:Maven可以自动下载和管理项目所需的库和框架,通过pom.xml文件中的依赖信息来解析和下载所需的jar包,从而避免了手动下载和配置jar包的繁琐过程。
  2. 项目构建:Maven提供了一套标准化的项目构建流程,包括编译、测试、打包和部署等操作。通过执行Maven命令,可以自动完成这些构建任务,确保构建的一致性和可重复性。
  3. 项目信息管理:Maven利用pom.xml文件描述的项目信息生成报告和文档,提高了项目的可读性和可维护性。
  4. 插件及扩展:Maven通过插件系统实现高度可扩展性。插件可以增强项目的功能,如代码生成、代码质量检查、测试报告等。
  5. 多模块项目支持:Maven支持创建多模块项目,简化大型项目的组织和管理。多模块项目可以共享依赖、插件和属性配置,方便项目配置和维护。

maven的常用命令

  • mvn clean:清理项目目录,删除之前构建生成的文件。
  • mvn compile:编译项目的源代码。
  • mvn test:执行项目的单元测试。
  • mvn package:将编译后的代码打包成可部署的格式,如jar或war文件。
  • mvn install:将打包后的文件安装到本地Maven仓库中,供其他项目使用。
  • mvn deploy:将打包后的文件部署到远程Maven仓库中,供其他开发者使用。

go mod和maven的对比

对于我自己来说,go mod用的最多的指令就是go mod tidy(引入新的包后整理一下再提交)和go mod vendor(用于拉取缺失的依赖包);相对应的,对于maven来说,用的最多的就是maven clean install和maven deploy(自己工程的发布到远端仓库,供其它模块调用)

相关文章:

【gopher的java学习笔记】依赖管理方式对比(go mod maven)

什么是go mod go mod是Go语言官方引入的模块管理工具,旨在简化项目依赖管理,提高构建的可重复性和稳定性。以下是关于go mod的详细介绍: 在go mod之前,Go语言主要依赖GOPATH和vendor目录来管理项目依赖。然而,这种方式…...

CTFshow—远程命令执行

29-35 Web29 代码利用正则匹配过滤了flag,后面加了/i所以不区分大小写。 可以利用通配符绕过 匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file * ? 匹配任何一个字符(不…...

Qt之简易音视频播放器设计(十五)

Qt开发 系列文章 - MediaPlayer(十五) 目录 前言 一、QMediaPlayer 二、实现方式 1.添加multimedia 2.创建类vedioplayer 3.UI设计 4.用户使用 5.效果演示 总结 前言 利用Qt进行音视频播放器设计,首先比较方便使用的是Qt自带的音视…...

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析,他们一个是Array(动态数组)的数据结构,一个是Linked(链表)的数据结构&#x…...

Wallpaper壁纸制作学习记录13

骨骼物理模拟 Wallpaper Engine还允许您为人偶变形骨骼配置某些物理模拟。选择骨骼时,点击编辑约束来配置骨骼这些属性。 警告 请记住,物理模拟可能会根据用户的最大FPS设置略微改变其行为。 Wallpaper Engine编辑器将始终以高帧速率渲染。您可以将壁纸…...

Visual Studio 2022安装教程

1、下载网址 Visual Studio 2022 IDE安装网址借助 Visual Studio 设计,具有自动完成、构建、调试、测试功能的代码将与 Git 管理和云部署融为一体。https://visualstudio.microsoft.com/zh-hans/vs/ 点击图片所示 双击运行 2、安装 点击C桌面开发(右边…...

std__invoke 的使用

std__invoke 的使用 文章目录 std__invoke 的使用1. std::invoke 的功能2. 语法3. 使用场景1. 调用普通函数2. 调用成员函数3. 调用成员函数(通过指针或引用)4. 调用函数对象(仿函数)5. 调用 Lambda 表达式 4. std::invoke 的优势…...

2501d,d.109

原文 2.109.0带来了15个主要更改和26个修复的Bugzilla问题.非常感谢39位贡献者,是他们使2.109.0变成可能. 更改编译器 1,[下一版]现在,为类型实例的成员设置别名是个错误 2,添加位字段内省功能 3,添加了从CTFE写入消息的__ctfeWrite 4,现在-verrors也限制弃用警告 5,dtoh为e…...

1、蓝牙打印机环境搭建

本项目采用stm32f103c8T6芯片,通过库函数实现打印功能,并配置有小程序蓝牙通信上位机。 1、创建文件夹目录 core文件夹存放核心库文件 LIB文件夹存放标准库函数文件 这里可以删减,用不到的可以不要。 obj存放编译后的文件 project存放项目…...

Axure RP11安装学习

安装: 官网下载地址:Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 设置自己的安装目录,一步步安装即可。 汉化: 汉化包下载地址: 链接: https://pan.baidu.com/s/1eIRoGkVqAY3u3I27lgDJ6A…...

axios和fetch的实现原理以及区别,与XMLHttpRequest的关系,并结合react封装统一请求示例

Axios 和 Fetch 对比及统一请求封装 1. Axios 基础用法 1.1 安装和引入 // 安装 npm install axios// 引入 import axios from axios;1.2 基本请求方法 // GET 请求 axios.get(/api/users).then(response > console.log(response.data)).catch(error > console.error…...

矩阵运算提速——玩转opencv::Mat

介绍:用Eigen或opencv::Mat进行矩阵的运算&#xff0c;比用cpp的vector或vector进行矩阵运算要快吗? 使用 Eigen 或 OpenCV 的 cv::Mat 进行矩阵运算通常比使用 std::vector<int> 或 std::vector<double> 更快。这主要有以下几个原因&#xff1a; 优化的底层实现…...

C++软件设计模式之模板方法模式

模板方法模式是面向对象软件设计模式之一&#xff0c;其主要意图是在一个方法中定义一个算法的骨架&#xff0c;而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重新定义算法的某些特定步骤。 动机 在软件开发中&#xff0c;常常会遇到这样的情…...

神经网络的初始化方式都有哪些?

一、概念 神经网络的初始化是深度学习中的一个关键步骤&#xff0c;它指的是在训练开始前为神经网络的权重和偏置设置初始值。合适的初始化方法可以加速模型的收敛&#xff0c;提高训练效果&#xff0c;甚至影响模型的最终性能。当然&#xff0c;目前我们使用Torch、TensorFlow…...

const成员函数

在c中经常看到这样的声明&#xff1a; class A{ ... int fun1() const; //const成员函数 int fun2() const; //const成员函数private: int a; //属于状态 static int b; //不属于状态&#xff0c;属于类 } 这个const关键字声明了这个函数是const成员函数&#xff0c;con…...

物理知识1——电流

说起电流&#xff0c;应该从电荷说起&#xff0c;而说起电荷&#xff0c;应该从原子说起。 1 原子及其结构 常见的物质是由分子构成的&#xff0c;而分子又是由原子构成的&#xff0c;有的分子是由多个原子构成&#xff0c;有的分子只由一个原子构成。而原子的构成如图1所示。…...

车载通信架构 --- 智能汽车通信前沿技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

Flutter中添加全局防护水印的实现

随着版权意识的加强&#xff0c;越来越多的应用开始在应用内部增加各种各样的水印信息&#xff0c;防止核心信息泄露&#xff0c;便于朔源。 效果如下&#xff1a; 在Flutter中增加全局水印的方式&#xff0c;目前有两种实现。 方案一&#xff0c;在native层添加一个遮罩层&a…...

BGP(Border Gateway Protocol)路由收集器

全球 BGP&#xff08;边界网关协议&#xff09;路由收集器的分布情况以及相关数据。以下是主要的信息解读&#xff1a; 地图标记&#xff1a; 每个绿色点代表一个路由收集器的位置。路由收集器分布在全球不同的地区&#xff0c;覆盖了五大区域&#xff1a; ARIN&#xff08;美…...

【DAGMM】直接跑tip

1.from sklearn.externals import joblib 版本高 joblib没有 直接pip install joblib&#xff0c;然后 import joblib 2.AttributeError: module ‘tensorflow’ has no attribute ‘set_random_seed’ # tf.set_random_seed(args.seed)#tf<2.0 tf.random.set_seed(args.s…...

vscode中调用deepseek实现AI辅助编程

来自 Python大数据分析 费弗里 1 简介 大家好我是费老师&#xff0c;最近国产大模型Deepseek v3新版本凭借其优秀的模型推理能力&#xff0c;讨论度非常之高&#x1f525;&#xff0c;且其官网提供的相关大模型API接口服务价格一直走的“价格屠夫”路线&#xff0c;性价比很高…...

AI大模型语音识别转文字

提取音频 本项目作用在于将常见的会议录音文件、各种语种音频文件进行转录成相应的文字&#xff0c;也可从特定视频中提取对应音频进行转录成文字保存在本地。最原始的从所给网址下载对应视频和音频进行处理。下载ffmpeg(https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-…...

可由 (5V) 单片机直接驱动的模块

可由 &#xff08;5V&#xff09; 单片机 直接驱动的模块 1. 传感器类 元器件描述温度传感器DS18B20&#xff08;数字温度传感器&#xff09;光强传感器光敏电阻&#xff08;通过 ADC 读取&#xff09;红外传感器红外接收模块&#xff08;如 VS1838&#xff09;超声波传感器HC…...

vue使用树形结构展示文件和文件夹

1. 树形结构显示 显示文件夹和文件&#xff1a;使用 el-tree 组件展示树形结构&#xff0c;文件夹和文件的图标通过 el-icon 进行动态显示。文件夹使用 Folder 图标&#xff0c;文件使用 Files 图标。节点点击&#xff1a;点击树形节点后&#xff0c;会将选中的节点保存到 sel…...

PHP框架+gatewayworker实现在线1对1聊天--聊天界面布局+创建websocket连接(5)

文章目录 聊天界面布局html代码 创建websocket连接为什么要绑定&#xff1f; 聊天界面布局 在View/Index目录下创建index.html html代码 <div id"chat"><div id"nbar"><div class"pull-left">与牛德胜正在聊天...</div…...

LinuxUbuntu打开VSCode白屏解决方案

解决方法是 以root权限打开VSCode sudo /usr/share/code/code --no-sandbox --unity-launch...

在 ESP 上运行 AWTK

AWTK 基于 esp 的移植。 测试硬件平台为 ESP32-S3-Touch-LCD-4.3&#xff0c;其它平台请根据实际平台自行调整。 安装下载工具 建议下载离线版本 ESP IDF v5.3.2 下载代码 git clone https://github.com/zlgopen/awtk-esp.git cd awtk-esp git clone https://github.com/zlg…...

硬件工程师面试题 21-30

把常见的硬件面试题进行总结&#xff0c;方便及时巩固复习。其中包括网络上的资源、大佬们的大厂面试题&#xff0c;其中可能会题目类似&#xff0c;加强印象即可。 更多硬件面试题&#xff1a;硬件工程师面试题 1-10硬件工程师面试题 11-20 21、单片机最小系统需要什么&#x…...

开源架构的容器化部署优化版

上三篇文章推荐&#xff1a; 开源架构的微服务架构实践优化版&#xff08;New&#xff09; 开源架构中的数据库选择优化版&#xff08;New&#xff09; 开源架构学习指南&#xff1a;文档与资源的智慧锦囊&#xff08;New&#xff09; 我管理的社区推荐&#xff1a;【青云交社区…...

Qt使用CMake编译项目时报错:#undefined reference to `vtable for MainView‘

博主将.h文件和.cpp文件放到了不同的文件目录下面&#xff0c;如下图所示&#xff1a; 于是构建项目的时候就报错了#undefined reference to vtable for MainView&#xff0c;这个是由于src/view目录下的CMake无法自动moc头文件导致的&#xff0c;需要手动moc include/view目录…...