Maven详解
1、Maven 简介
Maven 是一个项目管理工具,可以对 Java 项目进行自动化的构建和依赖管理。在JavaWeb开发中,使用Maven 可以极大地方便我们导入jar包。Maven的高级之处在于:它会帮助我们导入我们所需jar包所依赖的所有jar包。
**Maven的核心思想是:约定大于配置。**即:Maven会规定好我们该如何去编写我们的Java代码(如:项目的目录结构等),我们必须要按照这个规范来,不要去违反。
2、下载安装Maven
在官网:https://maven.apache.org 下载Maven安装包apache-maven-3.8.6-bin.zip
。
- 将
apache-maven-3.8.6-bin.zip
解压的安装目录下即可直接使用。
3、Maven目录分析
4、配置Maven环境变量
- 在“高级系统设置”中配置“环境变量”的“系统变量中”进行如下配置:
环境变量 | 地址 |
---|---|
新建系统变量:M2_HOME | maven安装目录下bin目录 |
新建系统变量:MAVEN_HOME | maven安装目录 |
修改环境变量: path | %MAVEN_HOME%\bin |
如下图所示:
-
环境变量配置后,在
cmd
窗口输入如下指令:mvn -version
,,检验是否配置成功。若配置成功则返回Maven的版本信息。如下图所示:
5、配置Maven配置文件
在maven安装目录下conf
目录下修改settings.xml
配置文件。
5.1、配置阿里云镜像
为了加速我们下载jar包,国内建议使用阿里云的镜像。在<mirrors>……</mirrors>
中添加:
1 | <!-- 阿里云镜像 --> |
注:①一定不要配置已经失效的镜像,否则会导致导包有问题,②我们可以在此配置多个镜像。
5.2、配置Maven的本地仓库
在Maven安装目录下,新建一个maven-repository
文件夹用来存放我们项目的依赖jar
包,并在配置文件中将其设置为我们的本地仓库:
1 | <!-- 本地仓库 --> |
注:settings.xml
配置文件中默认的本地仓库地址:${user.home}/.m2/repository
,如下图所示:
配置成功后,以后我们使用Maven导入的jar包就都在此了。
6、使用IDEA中创建Maven项目
6.1、使用Maven项目模板创建Web项目(了解)
(1)启动IDEA,使用Maven的webapp模板创建一个MavenWeb项目。
(2)填写项目基本信息(传说中的Maven GAV)。
(3)配置Maven的安装目录、配置文件和本地仓库目录信息后,点击Finish
按钮,完成MavenWeb项目创建。此时,Maven会自动从阿里云上导入大量jar
包到本地仓库。
注: Bundled(Maven 3)
是IDEA默认自带的Maven,它的可配置信息非常少。我们这里选择的是自己下载安装的Maven,如下图所示。
(4)等待项目初始化完毕,直至消息窗口出现BUILD SUCCESS
,表明项目创建成功。如下图所示:
(5)此时,查看Maven本地仓库,会发现里面已经下载了许多jar
包。
(6)点击File
下的Settings
菜单,检查项目中maven的相关配置是否正常。
**注:**IDEA在项目自动创建完成后,Maven home directory
经常会指向IDEA默认的Maven目录。如果出现该问题,我们需要手动将其修改为我们自己的Maven安装目录。
(7)Maven
的高级配置:建议选中“自动导入源”码选项。
(8)使用Maven项目模板自动创建的MavenWeb项目目录如下图所示。
**注:**我们一般不直接使用Maven的项目模板创建Web项目,而是将普通的Maven项目手动转化成Web项目。
6.2、创建普通的Maven项目(掌握)
(1)在上述MavenWeb项目打开的基础上,点击File
→New Projects Setings
→Settings for New Prijects
菜单修改IDEA的全局默认配置。
(2)对Maven的安装目录、配置文件和本地仓库进行全局设置。
(3)点击File
→New
→Project
菜单,使用Maven创建一个普通的maven项目。此时,不选择使用模板,直接点击next
按钮。
(4)填写项目基本信息(传说中的Maven GAV)。
(5)点击Finish
按钮,并选择在新窗口中打开,这样便完成普通Maven项目的创建。
(6)这样我们的Maven普通项目便创建好了。使用IDEA创建的普通Maven项目目录如下图所示:
附:IDEA全局配置和项目配置
-
IDEA中的
File
→New Projects Setings
→Settings for New Prijects
菜单或IDEA欢迎界面下方的Configure
→Setings
菜单均为全局配置,对所有的新项目均有效。 -
IDEA中的
File
→Setings
菜单是项目配置,仅对当前打开的项目有效。
7、Maven版本和JDK版本匹配问题(重点)
(1)现象描述
上述MavenWeb
项目和Maven
普通项目虽然创建成功了,但当我们使用Maven编译/运行该项目时会发现:Maven虽然会把依赖包导入到本地仓库中,也不报错,但在左侧项目栏的External Libraries
目录下始终只有JDK的包,右侧Maven窗口中也无法生成该项目的Plugins
和Dependencies
组件包。
(2)问题分析
- 在
Maven
窗口中右键打开Maven
的配置文件,此时会发现配置文件中有两个错误。
- 点击
Help
→Show Log in Explorer
菜单打开IDEA日志文件idea.log
。(最新的日志在最下面)
- 查看IDEA日志文件发现有函数找不到。
- 经分析,是Maven版本过高,和jdk版本不匹配造成的。
(3)解决方法
将Maven版本更换为maven-3.6.1
,让Maven版本与JDK1.8
版本相匹配(IDEA2020.2
)。具体步骤如下:
- 重新下载安装
apache-maven-3.6.1
。 - 重新配置Maven环境变量。
- 重新配置阿里云镜像和本地仓库。
- 重新对Maven的安装目录、配置文件和本地仓库进行全局设置。
- 通过
File
→Invalidate Caches/Restart
菜单,清除缓存并重启项目。
此时,我们便可以正常使用Maven编译/运行项目了。左侧项目栏的External Libraries
目录下除了JDK的包外会生成Maven导入的依赖包,右侧Maven窗口中也会生成该项目的Plugins
和Dependencies
组件包。
8、IDEA标记文件夹
IDEA中不同颜色的文件夹用于存放不同类型的文件。对于新建的文件夹,我们采用以下两种方法进行标记。
**例:**在上述新建的MavenWeb项目基础上,新建java
和resource
文件夹。
方法一:通过右键mark directory as
菜单直接对文件夹进行逐一标记。
方法二:通过右键File
→Project Structure
(项目结构配置)菜单对所有文件夹进行统一标记。
注:target
目录是IDEA
默认的编译路径,用来存放项目的:文件和目录、jar包、war包、class文件等。
9、Maven侧边栏的使用
Maven的常用命令行操作(双击即可执行):
- **clean(清理):**对项目进行清理,删除target目录下编译的内容。
- **compile(编译):**编译项目源代码。
- **test(测试):**对项目进行运行测试。
- **package(打包):**打包文件并存放到项目的
target
目录下,打包好的文件通常都是编译后的.class
文件。 - **install(安装):**在本地仓库生成仓库的安装包,可供其他项目引用,同时打包后的文件放到项目的
target
目录下。 - **deploy(部署):**在整合或者发布环境下执行,将最终版本的包上传到远程的
repository
,使得其他的开发者或者工程可以共享。
10、pom.xml
pom.xml
是Maven的核心配置文件。
pom.xml:
1 |
|
注1:dependencies
(项目依赖)使我们关注的重点,以后我们要学习的mybatis、redis、spring、SpringMVC等内容所依赖的jar包均在此配置。它与Maven窗口中的dependencies
目录和项目窗口中的External Libraries
是对应的。
**注2:**由于Maven的“约定大于配置”思想,我们以后可能会遇到我们自己写的配置文件(如:我们配置文件*.xml
写在了项目中的Java
目录下)无法被导出或者无法生效的问题。该问题的解决方法是:在pom.xml
的<build>……</build>
中配置resources
,修改Maven约定的过滤条件,来防止我们的资源导出失败。
1 | <!--在build中配置resources,来防止我们资源导出失败的问题--> |
11、Maven导包dependencies机制
11.1、依赖机制介绍
Maven
仓库是通过dependency
(依赖)机制进行jar
包导入的。dependency
机制是通过在配置文件pom.xml
中的手动添加<dependency> ... </dependency>
标签来实现的。 具体代码由Maven在线仓库处获得。具体步骤如下:
(1)在Maven的在线仓库 (https://mvnrepository.com/ ) 中搜索目标jar
包。
(2)选择合适的版本。(一般选使用者较多的版本)
(3)复制Maven的dependency
依赖代码。
(4)将代码粘贴到pom.xml
文件的<dependencies> ... </dependencies>
标签中。
(5)重新加载Maven项目。此时,Maven便会自动帮我们下载相关依赖包。pom.xml
文件中的dependencies
与Maven
窗口中的dependencies
目录和项目窗口中的External Libraries
是对应的。
11.2、项目jar包结构树
点击Maven依赖结构树生成按钮,会生成该项目中各依赖包之间的关系树,如下所示:
(本讲完,系列博文持续更新中…… )
关注**“阿汤笔迹”** 微信公众号,获取更多学习笔记。
原文地址:http://www.atangbiji.com/2022/09/17/MavenInDetail
博主最新文章在个人博客 http://www.atangbiji.com/ 发布。