Maven概述,搭建,使用

article/2025/7/28 4:14:41

一.Maven概述

Maven是Apache软件基金会的一个开源项目,是一个有优秀的项目构建(创建)工具,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系,完成项目的编译,测试,打包和发布等工作.

我在当前学习阶段遇到过的jar文件:

MySQL官方提供的JDBC驱动文件,通常命名为mysql-connecttor-java-.....jar,用于连接和操作MySQL数据库.
MyBatis核心库文件mybtis-.....jar,提供了ORM框架的核心功能.

在使用这些jar包时遇到的问题: 

随着学习的深入,项目中用到的jar文件越来越多,管理这些jar就很麻烦,我们现在项目中用到的jar包都是从各自的官方去下载,很麻烦

引入Maven

Maven官方把常用的jar包都收集管理起来,每一个在服务器端都存在一个唯一的地址,我们只需要知道jar在maven官方仓库的地址即可,就可以把文件用过的maven下载到我们的项目中.

Maven中的概念 

Maven 管理的项目的根目录下都有一个pom.xml文件.

pom.xml文件指示Maven如何工作.

在pom.xml文件中配置项目基本信息以及项目构建信息等.比如:项目坐标,项目依赖的jar,插件,编译选项等.

一旦在pom.xml文件中配置了所依赖的jar,Maven会从构建仓库中下载相应的构件.

在项目中的pom.xml文中配置jar的地址(类似于vuecli项目中的package.json文件中的各种依赖),且可以自动下载.

坐标

Maven 给每个jar定义了唯一的标志,这个在Maven 中叫做项目的坐标,通过这个
坐标可以找到你需要 用到的任何版本的jar包.


groupId、artifactId、packaging、version 的组合被称为项目的坐标,它们形成了 项目的唯一标识,Maven 通过坐标来精确定位构件。其中 groupId,artifactId,version 是必须的,且这三项的值必须唯一,packaging是可选的(默认为 jar).

坐标是jar文件在maven仓库中唯一的地址,由四个部分组成由groupId、artifactId、packaging、version构成.

仓库

仓库是指管理jar文件的仓库

仓库可以分为:maven官方中央仓库(在国外,下载慢,只有一个)
                       全球各地的中央仓库镜像(在各个国家,下载快,多个)
                       本地仓库:第一次使用jar时,会从远程仓库下载,存放在自己电脑上,以后使用.

中央仓库全球共享,先将jar从中央仓库下载到本地仓库,然后在项目中引用本地仓库的jar.

下图是仓库之前的关系:


 

本地仓库中的jar文件可以通过中央仓库或中央仓库镜像两种途径下载

二.Maven开发环境搭建 

1.前提

我们需要安装jdk,并在电脑系统高级系统中新建系统变量

注意:    新建的系统变量名一定要为JAVA_HOME,路径为jdk的根目录.

Maven 工作时需要通过网络下载各种插件以完成任务,因此需要保证网络的通畅 

2.下载Maven服务器

Maven官网:http://maven.apache.org

在Maven官网下载Maven服务器

3.安装,配置Maven

点击下载二进制的apache-maven-3.8.8-bin.zip进行下载.

在系统环境中配置环境变量,在path中配置到bin目录

注意 :   要选择所安装maven服务器的bin目录

配置成功后在命令行输入命令(该命令有一个空格)mvn -version查看版本如下图

出现此文本,表示maven环境配置成功 

配置本地仓库地址

接下来我们根据情况再本地磁盘中建立通过Maven 下载后的文件夹,一般我们称为"仓库(repository)".

在这里我创建的文件是localRepository,作为本地仓库

我们如何将下载的jar文件储存到我们指定的仓库中呢?

需要在Maven的服务器解压的文件中找到conf文件夹下的setting.xml文件进行修改,如下图所示

这里我创建了一个副本文件,以防我们在设置过程中出错

配置1:指定本地仓库地址

修改后:

配置2:配置阿里云Maven 镜像仓库,下载速度更快
<mirror>
<id>aliMaven</id>
<name>aliyun Maven</name>
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

修改后: 

4.在idea中设置Maven

在idea中任意一个项目中设置

点击idea左上角File

5.创建Maven工程

项目目录的结构 

三.pom.xml配置

pom.xml文件的基本结构

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--模型版本4.0--><groupId>org.example</groupId><artifactId>mavenPro</artifactId><!--项目名称--><version>1.0-SNAPSHOT</version><!--编译信息--><properties><!--指定jdk的版本--><maven.compiler.source>8</maven.compiler.source><!--编译时支持的jdk版本为jdk8--><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--支持的编码集--></properties><!--配置项目中依赖的jar的坐标(jar的地址),jar文件地址在maven官网中寻找--><dependencies><!--mysql  jar的坐标--><dependency><groupId>mysql</groupId><!--第一级目录--><artifactId>mysql-connector-java</artifactId><!--第二级目录--><!--<type>jar</type> 包类型(文件类型)默认是jar--><version>8.0.16</version><!--第三级目录  版本号--></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency></dependencies></project>

1.项目基本信息

<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mavendemo</artifactId>
<version>1.0-SNAPSHOT</version>

2.指定编译时使用的jdk版本

<properties><!--指定jdk的版本--><maven.compiler.source>8</maven.compiler.source><!--编译时支持的jdk版本为jdk8--><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--支持的编码集--></properties>

3.依赖信息 

Maven仓库官网(http://mvnrepository.com/)如下图所示

在此官网就可以下载自己所需开发jar包, 继续点击链接

这里演示下载mysql-jar包

在pom.xml文件的<dependencies></dependencies>标签中粘贴代码

安装多个jar包示例:

点击右侧M按钮,Dependencies目录中显示已下载的jar包 

下载的jar包存储在电脑硬盘中的本地仓库文件中 

四.Maven命令

  1. clean 清除之前所编译的内容
  2. compile 编译(通过maven将java文件编译为class文件) 
  3. package 打包项目(打包为jar)
  4. test 运行test包下面的内容

http://www.hkcw.cn/article/OQjkmwpdUx.shtml

相关文章

基于Canvas实现抽奖转盘

本案例基于画布组件、显式动画&#xff0c;实现的一个自定义抽奖圆形转盘。包含如下功能&#xff1a; 通过画布组件Canvas&#xff0c;画出抽奖圆形转盘。通过显式动画启动抽奖功能。通过自定义弹窗弹出抽中的奖品。 一、案例效果截图 案例运行效果如图11-28所示。 图11-27 …

【 SpringCloud | 微服务 网关 】

单体架构时我们只需要完成一次用户登录、身份校验&#xff0c;就可以在所有业务中获取到用户信息。而微服务拆分后&#xff0c;每个微服务都独立部署&#xff0c;这就存在一些问题&#xff1a; 每个微服务都需要编写登录校验、用户信息获取的功能吗&#xff1f; 当微服务之间调…

Vue2之3v-model在组件中的应用以及sync修饰符

文章目录 v-model的原理带value属性组件间传值的普通写法解析演示 根据v-model的原理 简写带有value属性组件之间的传值解析演示 使用sync修饰符&#xff0c;自定义属性名进行组件传值解析案例 v-model的原理 v-model 原理 原理&#xff1a;v-model本质上是一个语法糖。例如应…

从0开始学vue:Element Plus详解

一、核心架构解析二、技术实现指南三、高级特性实现四、性能优化方案五、生态扩展方案六、调试与测试七、版本演进路线 Element Plus 是专为 Vue 3 设计的桌面端 UI 组件库&#xff0c;基于 Vue 3 的 Composition API 重构&#xff0c;在保持与 Element UI 兼容性的同时&#x…

Qt6使用opengl

1.使用qmloscilloscope工程 2.main函数里 bool openGLSupported QQuickWindow::graphicsApi() QSGRendererInterface::OpenGLRhi;if (!openGLSupported) { qWarning() << "OpenGL is not set as the graphics backend, so AbstractSeries.useOpenGL will not work…

【模拟电子电路-工具使用】

模拟电子电路-工具使用 ■ 1. 模拟软件■ 1. circuit JS ■ 2. 万用表■ 3. 示波器■ 4.■ 5.■ 6.■ 7. ■ 1. 模拟软件 ■ 1. circuit JS ■ 2. 万用表 ■ 3. 示波器 ■ 4. ■ 5. ■ 6. ■ 7.

高速串行接口

1.网口设计方案 上图中给出了两种网口设计方案&#xff0c;最上面是传统设计方式&#xff0c;下面是利用GT作为PHY层的设计&#xff0c;然后FPGA中设计协议层和MAC层。 2.SRIO SRIO的本地操作和远程操作 3.其他高速接口 srio rapid io aurora8b10b aurora64b66b pcie s…

JVM学习(六)--垃圾回收

目录 一、垃圾回收 1、概述 1.1、什么是垃圾&#xff08;Garbage)&#xff09;&#xff1f; 1.2、为什么需要GC? 1.3、Java中垃圾回收的重点区域是? 1.4、早期的GC 2、垃圾回收算法 2.1、垃圾判别阶段算法 1、引用计数算法 2、可达性分析算法(或根搜索算法、追踪性…

pikachu通关教程-CSRF

CSRF(get) 用bp进行抓包 选择action value值的修改 点击test in browser copy然后放在bp代理的浏览器上&#xff0c;会出现一个提交按钮&#xff0c;这时候点击之后信息就被修改了。 CSRF(post) 请求的方式不同&#xff0c;其他都是一样 CSRF Token 存在cookie 首先要先下载一…

2024年数维杯国际大学生数学建模挑战赛A题飞行器激光测速中的频率估计问题解题全过程论文及程序

2024年数维杯国际大学生数学建模挑战赛 A题 复合直升机的建模与优化控制问题 原题再现&#xff1a; &#xff08;一&#xff09; 问题的背景   空速&#xff0c;即飞机相对于空气的速度&#xff0c;是飞行期间需要监控的关键参数。空速与飞行状态密切相关&#xff0c;如迎角…

【Hot 100】763. 划分字母区间

目录 引言划分字母区间我的解题一、记录每个字母的最远出现位置二、扫描字符串并进行贪心划分 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】763. 划分字母区间❣️ 寄语&#xff1a;书到用时…

【Unity博客节选】Playable Graph Monitor 安装使用

注&#xff1a;软件版本Unity 6.0 Timeline 1.8.7 作者&#xff1a;CSDN RingleaderWang 原文&#xff1a;《Unity第25期——Timeline结构及其源码浅析》 文章首发Github&#x1f44d;&#xff1a;《Timeline结构及其源码浅析》 Bilibili 视频版&#x1f44d;&#x1f44d;&a…

<5>, Qt系统相关

目录 一、Qt 事件 1&#xff0c;事件的定义 2&#xff0c;事件的处理 3&#xff0c;鼠标事件 4&#xff0c;按键事件 5&#xff0c;定时器 6&#xff0c;事件分发器 7&#xff0c;事件过滤器 二、Qt 文件 1&#xff0c;输入输出类 2&#xff0c;文件读写类 3&#x…

PCB设计教程【强化篇】——USB拓展坞DRC导出生产文件

前言 本教程基于B站Expert电子实验室的PCB设计教学的整理&#xff0c;为个人学习记录&#xff0c;旨在帮助PCB设计新手入门。所有内容仅作学习交流使用&#xff0c;无任何商业目的。若涉及侵权&#xff0c;请随时联系&#xff0c;将会立即处理 目录 前言 丝印调整 DRC 检查…

第十一讲 | 多态

多态 一、多态的概念二、多态的定义及实现1、动态多态的构成条件&#xff08;1&#xff09;、实现多态还有两个必须重要条件&#xff08;2&#xff09;、虚函数&#xff08;3&#xff09;、虚函数的重写/覆盖&#xff08;4&#xff09;、多态场景的一个选择题&#xff08;5&…

火语言UI组件--文件对话框

【组件功能】&#xff1a;选择单个或多个文件的对话框。 样式预览 设置 基础设置 属性名称属性释义输入值类型标题(title)对话框的标题字符串类型默认路径(defaultPath)对话框的默认展示路径字符串类型多选(multiSelections)是否允许多选布尔型(true / false)显示隐藏文件(s…

rl_sar功能包详解

文章目录 1. 功能包概述2. 目录结构详解2.1 核心目录结构2.2 各目录功能src/ 目录 - C源代码实现scripts/ 目录 - Python脚本实现include/ 目录 - C头文件library/ 目录 - 核心库和第三方依赖models/ 目录 - 预训练模型库launch/ 目录 - ROS启动文件worlds/ 目录 - Gazebo仿真世…

InternVL2.5-多模态大模型评估专业图片

具备图像理解功能的大模型InternVL2.5&#xff0c;能有效解析大部分图片。 对于专业图片如医学细胞切片&#xff0c;从专业角度解析&#xff0c;能推动模型应用到更广泛的领域。 InternVL2.5解析示例 prompt(胸部癌变细胞图片,来自PanNuke) 请评估这个组织的风险 InternVL2.…

解决 IDEA 在运行时中文乱码问题

直接说解决办法 编译 IDEA 所在目录的启动的 .vmoptions 文件&#xff0c;添加以下JVM 参数即可 -Dfile.encodingUTF-8如下图所示&#xff0c;Help > Edit Custom VM Options&#xff0c;随后在编辑框中添加-Dfile.encodingUTF-8 的 JVM 参数