黑马程序员JavaWeb开发教程
文章目录
- 一、概述
- 1、介绍
- (1)介绍
- (2)Maven的作用
- (3)官网
- (4)仓库
- 2、安装
- 二、IDEA 集成 Maven
- 1、配置Maven环境
- 2、创建Maven项目
- (1)Maven坐标
- 3、导入Maven项目
- (1)方式一
- (2)方式二
- 三、 依赖管理
- 1、 依赖配置
- 2、依赖传递
- 3、依赖范围
- 4、生命周期
一、概述
1、介绍
(1)介绍
- Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建
(2)Maven的作用
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
- 只需要在 pom.xml 中配置即可
-
统一项目结构:提供标准统一的项目结构
-
项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式
(3)官网
- http://maven.apache.org/
(4)仓库
- 用于存储资源,管理各种jar包
- 本地仓库:自己计算机上的一个目录
- 中央仓库:有Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库
2、安装
- Maven安装教程
二、IDEA 集成 Maven
1、配置Maven环境
- 全局参数的配置(如果仅配置当前工程的话,那么美创建一个新的项目就要重新配置一次)
- IDEA配置Maven环境
2、创建Maven项目
- IDEA 创建Maven项目
- 此时可能会遇到报红,可以尝试以下方法
-
按照“IDEA配置Maven环境”的步骤重新检查一下,各种配置是否正确
-
每次报错之后先回到本地仓库中搜索带有.lastUpdate后缀的文件全选,删除,之后再回到IDEA中重新刷新Maven项目(点击右侧工具栏中的maven,点击刷新图标)
-
除了原本的镜像尝试以下镜像,在配置文件settings.xml的mirrors 标签中填入(使用其中一个的时候,可以把另一个先注释)
- 镜像一
-
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
镜像二
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
(1)Maven坐标
- 什么是坐标
- Maven中的坐标是资源的唯一表示,通过该坐标可以唯一定位资源位置
- 使用坐标来定义项目或引入项目中需要的依赖
- Maven坐标主要组成
- gruopid:定义当前Maven项目隶属组织名称(通常是域名反写)
- artifactId:定义当前Maven项目名称(通常是模块名称)
- version:定义当前项目版本号
3、导入Maven项目
(1)方式一
-
打开IDEA,选择右侧maven面板,点+号,选中对应项目的pom.xml文件,双击即可
- 如果没有看到相关的面板,view,Apperance,Tool Window Bars 调出来
- 如果没有看到相关的面板,view,Apperance,Tool Window Bars 调出来
(2)方式二
-
File ,Project Structure,Moudles, import Module, Modules, pom.xml
-
从IDEA中移除Maven项目:项目右键,Remove Module
三、 依赖管理
1、 依赖配置
- 依赖:值当前项目运行所需要的jar包,一个项目中可以引入多个依赖
- 配置
- 在 pom.xml 中编写
<dependencies>
标签 - 在
<dependencies>
标签中使用<dependency>
引入坐标 - 定义坐标的 groupId,artifactId,version
- 点击刷新按钮,引入最新加入的坐标
- 注意事项
- 如果引入依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)
- 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。
2、依赖传递
- 依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目简介依赖其他资源
- 排除依赖:排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
3、依赖范围
- 依赖的jar包,默认情况下,可以在任何地方使用。可以通过
<scope></scope>
设置其作用范围。 - 作用范围
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包运行(package指令范围内)
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>
</dependency>
4、生命周期
- Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一
- Maven中有三套,相互独立的生命周期:
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等
- site:生成报告、发布站点等(不常用)
- 每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
- 常见的生命周期阶段
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架运行测试(junit)
- package:将编译后的文件打包,如jar、war等
- install:安装项目到本地仓库
- 注意事项
- 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行
- 常用的几个阶段在maven面板中都有
- 执行指定生命周期的两种方式
- 在idea中,右侧maven工具栏,选中对应的生命周期,双击执行。
- 在命令行中,通过命令执行(例如:mvn compile)