JavaWeb学习(七):Web后端开发 —— Maven
- JavaWeb学习(七):Web后端开发 —— Maven
- 概念
- 安装
- IDEA 集成 Maven
- 依赖管理
本文为个人学习记录,内容学习自 黑马程序员
概念
-
Maven 是 apache 的一个开源项目,是一款用于管理和构建 Java 项目的工具
-
作用:
- 依赖管理:方便快捷地管理项目依赖的资源(jar 包),避免版本冲突问题
- 项目结构:提供标准、统一的项目结构
- 项目构建:标准跨平台(Linux,Windows,MacOS)的自动化项目构建方式
-
整体架构:

- 仓库介绍:
- 概念:用于存储和管理 jar 包,分成本地仓库、中央仓库和远程仓库(私服)
- 本地仓库:本地计算机上的一个文件夹
- 中央仓库:由 Maven 团队维护,网址为 https://repo1.maven.org/maven2/
- 远程仓库:一般由公司团队搭建的私有仓库
- 资源查找:
- 当在依赖管理模型中定义了一个资源时,会先在本地仓库中查找是否存在该资源,有则直接调用,否则去远程仓库中查找
- 如果在远程仓库中存在该资源,则将其下载到本地仓库中,以后直接在本地仓库调用即可,如果还是不存在该资源,则继续到中央仓库中查找
- 如果在中央仓库中存在该资源,则将其下载到远程仓库中和本地仓库中,以后直接在本地仓库调用即可
- 概念:用于存储和管理 jar 包,分成本地仓库、中央仓库和远程仓库(私服)
- Maven 坐标:
- 概念:Maven 坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
- 作用:使用坐标来定义项目或引入项目中需要的依赖
- 组成:
- groupId:定义当前 Maven 项目隶属组织名称,通常是域名反写,例如 com.baidu.www
- artifactId:定义当前 Maven 项目名称,通常是模块名称
- version:定义当前项目版本号
安装
-
从 Maven 官网下载压缩包 apache-maven-3.6.1-bin.zip,并解压到本地
-
配置本地仓库:修改 conf/settings.xml 中的 <localRepository> 标签,指定要作为本地仓库的文件夹
<localRepository>D:\Maven\maven_repo</localRepository>
-
配置远程仓库:修改 conf/settings.xml 中的 <mirrors> 标签,指定远程仓库的信息
<!-- 配置阿里云仓库 --> <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> </mirror>
-
配置环境变量
设置 MAVEN_HOME 为 Maven 的安装路径,并将其 bin 目录添加到 PATH 环境变量中
IDEA 集成 Maven
-
配置 Maven 环境
- 单个项目配置 Maven 环境
-
全局项目配置 Maven 环境
关闭所有的项目,在 IDEA 起始页选择配置全局设置,之后的步骤和配置单个项目时完全一致
-
创建 Maven 项目
-
在 IDEA 起始页新建一个空项目,自定义项目名
-
右键新项目,选择新建模块(New Module)
-
-
导入 Maven 项目
-
Maven 项目结构
依赖管理
-
依赖配置
-
依赖:指当前项目运行所需要的 jar 包,一个项目可以引入多个依赖
-
步骤:1. 在 pom.xml 文件中添加依赖项 2. 对 pom.xml 进行修改后会浮现出刷新按钮,点击该按钮后才会进行更新
-
说明:
- <dependencies> 标签内由多个 <dependency> 标签组成,而 <dependency> 标签内用于配置单个依赖
- 如果引入的依赖在本地仓库中不存在,将会连接远程仓库/中央仓库进行下载
- 可以在 https://mvnrepository.com/ 中查询依赖信息
-
-
依赖传递
-
直接依赖:在当前项目中通过依赖配置建立的依赖关系
-
间接依赖:被依赖的资源如果依赖其他资源,则当前项目间接依赖其他资源
-
传递性:Maven 中的依赖具有传递性,即项目指定了直接依赖后,会自动建立起间接依赖
-
排除依赖:如果不需要用到某些间接依赖,可以主动断开依赖的资源
<dependencies><dependency><!-- 指定直接依赖 --><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version><!-- 指定排除的依赖 --><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions></dependency> </dependencies>
-
-
依赖范围
-
依赖的 jar 包,默认情况下可以在任何地方使用,包括主程序范围(main 文件夹内),测试程序范围(test 文件夹内),在打包时也可以包含进去(package 指令范围内)
-
可以通过 <scope> 标签设置依赖的作用范围
scope值 主程序 测试程序 打包(运行) 范例 complie(默认) Y Y Y log4j test N Y N junit provided Y Y N servlet-api runtime N Y Y jdbc驱动 <dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version><!-- 设置scope值为test --><scope>test</scope></dependency> </dependencies>
-
-
生命周期
-
作用:对所有的 Maven 项目构建过程进行抽象和统一
-
Maven 中有 3 套相互独立的生命周期,每套生命周期包含一些阶段,阶段按序执行,后面的阶段依赖于前面的阶段
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等
- site:生成报告、发布站点等
-
生命周期阶段:最常用的有五个阶段:clean、complie、test、package、install
生命周期阶段 说明 体现 clean 移除上一次构建生成的文件 清除项目下的 target 文件夹 compile 编译项目源代码,生成字节码文件 在 target/classes 文件夹下生成字节码文件 test 使用合适的单元测试框架运行测试 在 target 文件夹下生成测试相关文件 package 将编译后的文件打包 在 target 文件夹下生成项目的 jar 文件 install 安装项目到本地仓库 将 target 文件夹下项目的 jar 文件添加到本地仓库中 -
执行指定生命周期
-
方法一:在命令行中,通过命令执行
-
方法二:在 IDEA 中,通过右侧的 Maven 工具栏,双击需要运行的阶段
-
-