一篇文章学会Maven项目管理工具
一、Maven简介
Apache Maven
是一个项目管理和构建工具
,它基于项目对象模型
(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
1.主要功能
- 提供了一套标准化的项目结构Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用。
- 提供了一套标准化的构建流程开发一套系统,代码需要进行编译、测试、打包、发布等一系列操作,Maven提供了一套简单的命令来完成项目构建。
- 提供了一套依赖管理机制依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。Maven使用标准的
坐标
配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
2.Maven模型
- 项目对象模型 (Project Object Model)用来完成
标准化构建流程
,Maven提供了一系列插件供我们使用。如我们需要编译,Maven提供了一个编译插件供我们使用,我们需要打包,Maven就提供了一个打包插件提供我们使用等等。 - 依赖管理模型(Dependency)依赖管理模型则是
使用坐标来描述当前项目依赖的第三方jar包
- 插件(Plugin)
3.Maven仓库
我们创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。
仓库分类:
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库
- 远程仓库(私服):一般由公司团队搭建的私有仓库
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
- 如果有,则在项目直接引用;
- 如果没有,则
去中央仓库中下载对应的jar包到本地仓库
。
4.Maven 坐标
- Maven 中的坐标是
资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
- artifactId:定义当前Maven项目名称(通常是模块名称)
- version:定义当前项目版本号
资源可以是插件、依赖、当前项目。
我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。
二、Maven安装配置
1.下载安装
Maven官方下载地址:Maven – Download Apache Maven
下载完成后解压 apache-maven-3.6.1.rar 既安装完成
建议解压缩到没有中文、特殊字符的路径下。
解压缩后的目录结构:
- bin目录 : 存放的是可执行命令。mvn 命令重点关注。
- conf目录 :存放Maven的配置文件。
settings.xml
配置文件后期需要修改。 - lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。
2.配置环境变量
配置环境变量 MAVEN_HOME 为安装路径的bin目录
此电脑
右键 -->高级系统设置
-->高级
-->环境变量
- 在系统变量处新建一个变量
MAVEN_HOME
变量值为Maven安装目录 - 在
Path
中进行配置:%MAVEN_HOME%\bin
测试配置结果:
打开命令提示符进行验证:mvn -version
3.配置本地仓库
修改 conf/settings.xml 中的
<localRepository>D:\Japroject\apache-maven-3.8.3\repos</localRepository>
4.配置阿里云私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。
修改 conf/settings.xml 中的
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url> https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
三、Maven基本使用
1.Maven 常用命令
- compile :编译
mvn compile
执行上述命令可以看到:
- 从阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件
- 在项目下会生成一个
target
目录,编译后的字节码文件就放在该目录下
- clean:清理
mvn clean
执行上述命令可以看到
- 从阿里云下载清理需要的插件jar包
- 删除项目下的
target
目录
- test:测试
mvn test
该命令会执行所有的测试代码。
- package:打包
mvn package
执行上述命令可以看到:
- 从阿里云下载打包需要的插件jar包
- 在项目的
terget
目录下有一个jar包(将当前项目打成的jar包)
- install:安装
mvn install
该命令会将当前项目打成jar包,并安装到本地仓库。
使用上面命令需要在磁盘上进入到项目的
pom.xml
目录下,打开命令提示符
2.Maven 生命周期
Maven 对项目构建的生命周期划分为3套:
- clean :清理工作。
- default :核心工作,例如编译,测试,打包,安装等。
- site : 产生报告,发布站点等。这套声明周期一般不会使用。
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。
当我们执行
install
(安装)命令时,它会先执行compile
命令,再执行test
命令,再执行package
命令,最后执行install
命令。当我们执行
package
(打包)命令时,它会先执行compile
命令,再执行test
命令,最后执行package
命令。
四、IDEA使用Maven
1.配置Maven环境
- 选择 IDEA中 File --> Settings
- 搜索 maven
- 设置 IDEA 使用本地安装的 Maven,并修改配置文件路径
2.创建 Maven项目
- 创建模块,选择Maven,点击Next
- 写模块名称,坐标信息,点击finish,创建完成
3.导入 Maven项目
- 选择右侧Maven面板,点击 + 号
- 选中对应项目的pom.xml文件,双击即可
4.使用坐标引入jar包
4.1导入依赖
- 在项目的 pom.xml 中编写
标签 - 在
标签中 使用 引入坐标 - 定义坐标的 groupId,artifactId,version
- 点击刷新按钮,使坐标生效
注意:
- 具体的坐标我们可以到如下网站进行搜索
- https://mvnrepository.com/
快捷方式导入jar包的坐标:
- 在 pom.xml 中 按 alt + insert,选择 Dependency
- 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
- 点击刷新按钮,使坐标生效
自动导入设置:
上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成
- 选择 IDEA中 File --> Settings
- 在弹出的面板中找到 Build Tools
- 选择 Any changes,点击 ok 即可生效
4.2依赖范围
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | logback |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
system | Y | Y | - | 存储在本地的jar包 |
- compile :作用于编译环境、测试环境、运行环境。
- test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided :作用于编译环境、测试环境。我们后面会学习
servlet-api
,在使用它时,必须将scope
设置为该值,不然运行时就会报错 - runtime : 作用于测试环境、运行环境。jdbc驱动一般将
scope
设置为该值,当然不设置也没有任何问题
注意:
- 如果引入坐标不指定
scope
标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
微信关注