Maven介绍及使用

1.Maven概念

Maven是目前市场上最流行的包管理工具、项目构建工具。
通过maven可以管理整个项目从创建、开发到编译、测试、打包、发布的整个流程,进行标准化开发。
特别是通过依赖机制可以优雅的解决项目开发中包的依赖问题,大大简化了项目开发、管理流程。
Maven基于项目对象模型(POM)概念,利用中央信息片段管理一个项目的构建,生成,报告等等步骤;
是目前最主流的项目构建工具。

maven并不是市场上唯一的项目构建工具,但是是目前最流行的项目构建工具。
常见的项目管理工具
在这里插入图片描述

2.Maven的基本概念

a. 库(repository)
maven使用库的概念来管理项目资源。
maven库又分为本地库和远程库,远程库可以细分为中央库、镜像库(代理库)和私服。
i. 中央库
指的是maven官方管理维护的库,是全世界最大的maven仓库,管理着大量的资源。
ii. 镜像库(代理库)
为了分摊中央库的访问压力、为了使全世界不同地区的用户都可以有较好的下载体验,除了中央库,全世界范围内还有多镜像库存在,镜像库可以认为是对中央库全部或部分资源的拷贝,全世界开发者可以选择去连接速度最优的镜像库获取资源。
国内比较知名的maven镜像库有网易镜像库和阿里镜像库。
iii. 私服
公司或个人也可以利用maven的机制搭建在一定范围内使用的类似中央库的库,在一定范围内管理项目资源,这样的库只在一定范围内起作用,且不一定和中央库互通,这样的库称之为私服库。
iv. 本地库
在当前机器内部保存资源的库。

maven在工作时优先从本地库寻找资源,如果找不到就去从配置的镜像库或私服或中央库中自动下载资源,下载的资源保存在本地库中,以便于重复使用。
在这里插入图片描述

3. 库中的资源定位

在maven库中管理着大量的资源,如何唯一的标识这些资源是一个基本的问题。maven中是通过资源的坐标地址来解决这个问题的。
在这里插入图片描述
其中
在这里插入图片描述

4.Maven的安装配置

a. 下载
http://maven.apache.org/download.cgi
b. 安装
i. 安装好jdk
maven3.6以上的版本至少需要jdk8,配置好JAVA_HOME环境变量。
ii. 安装maven
解压maven到任意目录,注意目录路径中不要出现中文或空格。
iii. 配置环境变量
配置MAVEN_HOME环境变量指向maven的安装目录
配置PATH环境变量指向maven安装目录中的bin目录
在这里插入图片描述
iv. 配置maven
maven的核心配置文件是conf/settings.xml
在正式使用maven之前需要配置这个文件
主要需要指定本地库和镜像库的地址
在这里插入图片描述

5.maven的使用

可以利用maven管理项目的整个生命周期,这是通过maven的不同命令来实现的。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

b. mvn compile
会自动导入pom文件中指定的依赖。
会将当src/main目录下的源码和资源编译后存放到target/classes下。
**注意,test文件夹下的所有内容在编译,打包,安装过程都不参加,但是会参加测试过程。
c. mvn test
通过此命令可以执行test文件夹下的测试用的内容,实现项目测试
首先会将src/test目录下的源码和资源编译后存放到target/test-classes下,之后执行其中的测试代码,输出测试结果到控制台,同时测试结果保存一份到target/surefire-reports中
d. mvn clean
清理mvn命令,此命令可以清除target文件夹,在其他mvn命令执行之前,通常都建议大家先执行一次mvn clean,这样可以将之前其他操作产生的结果清除,防止对本次执行的命令产生影响。

e. mvn package 默认是jar包
打包命令,会将编译完成的资源打包成指定格式(jar包/war包),具体怎样打包取决于pom.xml文件中的配置
如下配置指定了项目打成什么样的包:
jar
mvn package命令同时隐含了编译 测试 打包过程,建议在执行此命令之前最好先执行一次mvn clean 防止之前其他命令产生target内容影响此次命令执行的结果。
在这里插入图片描述
f. mvn install
maven项目安装,这会将打包好的包及其相关的资源文件存放到本地库中由maven进行管理,成为了maven所管理的一个资源。
maven install命令会隐含进行编译 测试 打包 安装,建议在执行此命令之前最好先执行一次mvn clean 防止之前其他命令产生 的target影响此次命令执行的结果。
在这里插入图片描述

g. mvn deploy
maven项目发布,将maven本地库中管理的资源发布到远程库中。
但是无论是中央库还是镜像库都不允许随意上传部署,所以无法在中央库和镜像库中实现这个过程。
但是如果是自己搭建的私服,是可以通过这个过程完成资源发布的。
h.真实开发过程
在这里插入图片描述
6.pom文件的编写
maven管理的项目中,通过项目根目录下的pom.xml文件进行核心配置。

a.项目的基本信息

<modelVersion>4.0.0</modelVersion>

<!--当前项目的maven资源坐标-->
<groupId>cn.tedu</groupId>
<artifactId>MVNDemo01</artifactId>
<version>1.0-SNAPSHOT</version>

<!--此项目在mvn package的过程中,要打成什么样的包,通常是jar或war-->
<packaging>jar</packaging>

<!--项目名称-->
<name>MVNDemo01</name>
<!--项目主页-->
<url>http://maven.apache.org</url>

<!--参数配置-->
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

b.依赖信息
声明当前项目所依赖的资源,maven根据此配置自动导入相关资源。
可以查询需要导入的资源的官网,通常会提供dependency的写法,或者也可以去maven中央库的网页版(https://mvnrepository.com/)中搜索,同样可以找到相应资源的依赖配置方法。

在这里插入图片描述
可选配置:
i. scope属性
在这里插入图片描述
在项目中导入的依赖并不一定在项目全生命周期中都要用,此时可以通过scope属性指定依赖应用的范围。
在这里插入图片描述
ii. exclusions移除依赖传递
在项目中导入A依赖,单A本身又依赖B和C,B又依赖的D,则Maven会智能的自动导入B、C和D,这样依赖就被传递了开来,这个过程就称之为依赖的传递。
依赖传递是一个非常优良的特性,可以省去maven使用过程中的大量配置细节,但这种智能的自动导入过程偶尔也会造成包引入的冲突,造成程序运行出错。此时可以通过配置exclusions来打断依赖的传递来解决问题。
简单来说配置的exclustions就是在告诉maven在导入某个包的过程中,指定的依赖传递不要自动导入。
在这里插入图片描述
c.插件信息
可以额外的增强maven的功能,实现一些特殊效果
i. main插件
用来指定打包出来的jar中的入口方法
在这里插入图片描述

ii. 打源码插件
用来额外打包源代码
在这里插入图片描述

7.IEDA下Maven的使用

a.基于骨架创建maven项目
在这里插入图片描述
b.指定项目资源坐标
在这里插入图片描述
c.配置maven信息
在这里插入图片描述
d.配置项目信息
在这里插入图片描述
e.创建缺失的文件夹
在这里插入图片描述
f.配置POM文件
在这里插入图片描述
g.应用POM文件 修改/使用MAVEN命令
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值