Maven基础知识

本文详细介绍了Maven的安装配置,包括下载、环境变量设置以及本地仓库的配置。此外,讲解了Maven的基础概念,如仓库(本地、中央、私服)、坐标和依赖管理。通过实例演示了在IDEA中创建Java和Web项目的过程,以及配置打包格式和添加依赖。还涵盖了Maven的生命周期和依赖传递原理,包括依赖冲突与隐藏的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.maven概述

maven是一款项目的管理软件
它的两个核心功能是 依赖管理 + 项目构建(一键构建)
这两个核心功能,在maven中使用pom对象去统一管理
在我们开发中,pom对象对应的是我们项目中的pom.xml配置文件
所有在整个maven项目中,pom.xml是非常核心的配置文件,我们基本就是在操作这个文件的

2.安装及配置

2.1下载
官方下载地址:http://maven.apache.org/download.cgi
也可以通过网盘下载我的
这是我使用的maven 版本为3.6.1 (Linux版的) 大小约9兆
链接:https://pan.baidu.com/s/1xAY9WsSQSEJ1aNDQOr79lw
提取码:tcat
这是我使用的maven 版本为3.6.1 (windows版的) 大小约9兆
链接:https://pan.baidu.com/s/1ACUnFpOqy1We0Ipx8A_PvQ
提取码:winm
这是我的本地仓库下载好的常用jar包,存到网盘上,下载好后解压即可使用(没会员速度会比较慢)大小约1.1G
链接:https://pan.baidu.com/s/1CmDCWaDOLqgj6zeNvGno5g
提取码:ahaa
2.2安装
maven是一个绿色软件,解压即安装,非常容易,解压完成后我们可以查看一下maven自己的一个目录结构如下

在这里插入图片描述
各目录结构说明:
bin:可执行程序目录,
boot:maven自身的启动加载器
conf:maven配置文件的存放目录
lib:maven运行所需库的存放目录
2.3 环境配置
maven的运行需要java的环境,能用到maven相信配置环境变量的步骤一定不陌生
2.3.1:我的电脑(右击)-------->属性--------->高级系统设置---------->新建系统变量 MAVEN_HOME
系统变量值就是maven软件的根目录
在这里插入图片描述
2.3.2配置path:
找到path变量名双击进去添加下图的代码
%MAVEN_HOME%\bin
在这里插入图片描述

3.Maven基础概念

3.1 仓库
仓库:用于存储资源,主要是各种jar包
仓库分为本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库
中央仓库:maven团队自身维护的仓库,属于开源的**(必须)**
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源(可选)
本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源**(必须)**
私服的作用:
(1)保存具有版权的资源,包含购买或自主研发的jar
(2)一定范围内共享资源,能做到仅对内不对外开放
3.2 坐标
我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标
坐标:maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2/
那maven中的坐标是如何构成的呢?
maven坐标的主要组成如下:
groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)
artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
version:定义当前资源的版本号
packaging:定义资源的打包方式,取值一般有如下三种
(1)jar:该资源打成jar包,默认是jar
(2)war:该资源打成war包
(3)pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构
如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询,
https://mvnrepository.com/,在该网站中可直接搜索想要的资源,然后就能得到该资源的坐标
输入资源名称进行检索。比如tomcat
在这里插入图片描述
选择想要的版本号
在这里插入图片描述
点击就能看见坐标代码,复制就能用
在这里插入图片描述

maven坐标的作用:
使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成.
3.3 配置本地仓库和阿里云私服
开发者要在自己电脑上做开发,首先要做的就是配置本地仓库,默认的仓库存储位置在C盘,
在maven安装目录下的conf文件夹中的settings.xml文件可以查看,红框框住的就是仓库默认存储的路径
在这里插入图片描述
因为我们平时开发项目所有的资源会比较多,而且各种资源还有好多的版本,资源与资源之间还有相互依赖的这种情况,因此本地仓库保存的内容会非常的多,它的体积会很大,如果放在C盘下不太合适,因此我们可以自己来指定一个位置作为本地仓库的位置。
配置本地仓库
我们需要在maven安装目录下的conf文件夹中,修改settings.xml文件
在这里插入图片描述
代码编写位置在红色划线处

<localRepository>/这里输入的是自己想要将资源存储在哪的路径</localRepository>

配置阿里云镜像站点
因为我们在中国,官方网站在外国,所以在下载资源时会比较慢,而阿里有镜像网站,所以相对来说会快一些。
将此代码粘贴在settings.xml文件里的标签内

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

位置如下图所示
在这里插入图片描述

4.Maven项目搭建

在实际开发过程中,通常是通过第三方工具来进行项目的构建和管理,因此我们使用IDEA工具进行maven项目的搭建

4.1 IDEA工具搭建maven项目

(1)在IDEA中配置Maven
在Settings里配置maven
注意:(maven的安装路径层级不要太深[3层以内],不然可能会导致idea配置maven不成功的情况)
在这里插入图片描述
将此代码复制在下图位置中

-Xmx768m -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

在这里插入图片描述

4.2 创建maven工程(Java项目)

在这里插入图片描述

4.3 填写本项目的坐标

在这里插入图片描述

4.4 创建好项目后的结构

查看各目录颜色标记是否正确
在这里插入图片描述

注意:test文件下的所有内容,在发布时,是不打进包内的

在这里插入图片描述

IDEA右侧有一个maven管理界面,可点开查看相关插件在这里插入图片描述

5.创建web项目

5.1创建项目,和上面创建Java项目的过程一样。

5.2创建完后,在main文件夹下创建webapp文件夹

在这里插入图片描述

5.3 在项目的pom.xml文件中配置打包格式

在这里插入图片描述

5.4 在项目的pom.xml文件中添加项目资源依赖

注意:servlet和jsp的jar包在tomcat服务器中是存在的,这里添加的依赖只是在写代码时防止编译报错,真正运行项目时,使用的是tomcat服务器中的。所以这里添加的servlet和jsp依赖必须将其scope指定为provided
代码在下面
在这里插入图片描述

5.5tomcat插件部署

在pom.xml中添加tomcat和jdk插件
在这里插入图片描述
双击执行插件中的tomcat7:run
在这里插入图片描述

<dependencies>
<!-- junit测试代码 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

<!-- Servlet和Jsp的模板 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>javax.servlet.jsp</groupId>
	<artifactId>javax.servlet.jsp-api</artifactId>
	<version>2.3.3</version>
	<scope>provided</scope>
</dependency>
</dependencies>

 <build>
        <plugins>
            <!-- tomcat插件的模板 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>80</port>
                    <path>/</path>
                </configuration>
            </plugin>
            <!-- jdk编译插件的模板 -->
            <plugin>
            	<groupId>org.apache.maven.plugins</groupId>
            	<artifactId>maven-compiler-plugin</artifactId>
            	<configuration>
            		<target>1.8</target>
            		<source>1.8</source>
            		<encoding>utf-8</encoding>
            	</configuration>
            </plugin>
        </plugins>
    </build>

6、生命周期

maven是一款项目的管理软件,管理项目的整个生命周期,在这个过程中有很多指令,每个指令对应生命周期中的一个过程。
总结起来,maven的生命周期有三种:
(1)清理
clean:清理工作
pre-clean:执行一些在clean之前的工作
clean:移除上一次构建产生的所有文件
post-clean:执行一些在clean之后立刻完成的工作

(2)默认
default:核心工作,例如编译,测试,打包,部署等

(3)站点
site:产生报告,发布站点等
pre-site:执行一些在生成站点文档之前的工作
site:生成项目的站点文档
post-site:执行一些在生成站点文档之后完成的工作,为部署做准备
site-deploy:将生成的站点文档部署到特定的服务器上

7 依赖传递

当B项目中有一个依赖C,此时A项目依赖B项目,那么A项目中会同时有C的依赖,我们将这种行为称之为依赖传递

7.1、依赖冲突

在依赖传递过程中, 会有一个依赖冲突的问题,对于依赖冲突,maven的解决方案:
① 路径优先:路径层级越浅,越优先使用
② 声明优先:路径层级一致的时候,谁先声明,优先使用谁
路径优先:
在这里插入图片描述
声明优先:
在这里插入图片描述

7.2、依赖隐藏

B中有依赖C,A中有依赖B,此时A中也有依赖C – 依赖传递
如果B不希望A看到C,可以在B中设置C的optional为true-- 依赖隐藏
如果A不希望看到B中的C,可以在A中设置exclusions排除C – 依赖排除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值