后端 | Maven | 依赖管理
笔记来源:黑马程序员2023新版JavaWeb开发教程,实现javaweb企业开发全流程
一、Maven概述
1、Maven是什么
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
2、Maven的作用
依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突信息。
统一项目结构:提供标准、统一的项目结构。
项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式。
清理、编译、测试、打包、发布。
3、Maven仓库
用于存储资源,管理各种jar包。
本地仓库:自己计算机上的一个目录。
中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2。
远程仓库(私服):一般由公司团队搭建的私有仓库。
4、Maven的安装
Maven依赖JDK,先准备JDK环境,然后在Maven官网下载Maven安装包,并解压到本地。
配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录。
配置阿里云私服(加速jar包下载):修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签。
配置环境变量(使得在任意目录都能运行Maven):MAVEN_HOME为maven解压的目录,并将其bin目录加入PATH环境变量。
测试
5、Maven坐标
什么是坐标:
Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
使用坐标来定义项目或引入项目中需要的依赖。
Maven坐标的主要组成:
groupId:定义当前Maven项目隶属组织名称,通常是域名反写。
artifactId:定义当前Maven项目名称,通常是模块名称。
version:定义当前项目版本号。
二、依赖管理
1、依赖配置
依赖:指当前项目运行时所需要的jar包,一个项目中可以引入多个依赖。
配置:
在pom.xml中编写<dependencies>标签。
在<dependencies>标签中使用<dependency>引入坐标。
定义坐标的groupId、artifactId、version。
点击刷新按钮,引入最新加入的坐标。
2、依赖传递
依赖具有传递性。
直接依赖:在当前项目中通过依赖配置建立的依赖关系。
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。
排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。
3、依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>...</scope>设置其作用范围。
作用范围:
主程序范围有效(man文件夹范围内)。
测试程序范围有效(test文件夹范围内)。
是否参与打包运行(package指令范围内)。
scope值:
compile:默认值,主程序、测试程序、打包运行。
test:测试程序。
provided:主程序、测试程序。
runtime:测试程序、打包运行。
4、生命周期
Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一。
maven中有3套相互独立的生命周期(在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行):
clean:清理工作,移除上一次构建生成的文件。
default:核心工作。如编译、测试、打包、安装、部署等。
compile:编译项目源代码。
test:使用合适的单元测试框架进行测试。
package:将编译后的文件打包,如jar、war等。
install:安装项目到本地仓库。
site:生成报告、发布站点等。