一、简介
(一)主要功能
-
提供了一套标准化的项目结构。
-
提供了一套标准化的构建流程(编译,测试,打包,发布…)。
-
提供了一套依赖管理机制。
(二)Maven模型
POM(Project Object Model):项目对象模型。
仓库:存放jar包。
(1)仓库
仓库分类:
- 本地仓库:自己计算机上的目录。
- 中央仓库:由Maven团队维护的全球唯一的仓库。
- 远程仓库(私服):一般由自己所属公司搭建。
仓库寻找流程:
- 没有私服时:本地仓库>>中央仓库。(本地仓库有就直接使用,没有就找中央仓库,中央仓库找到后会同步jar包到本地)
- 有私服时:本地仓库>>远程仓库>>中央仓库
二、安装配置
- 解压Maven压缩包(绿色安装)Maven下载地址(选择Binary zip archive的Link列那个)。附Maven历史版本
- 配置环境变量:新建一个系统变量
MAVEN_HOME
,值为安装目录D:\Program Files\apache-maven-3.8.6
;然后在Path
目录添加一个%MAVEN_HOME%\bin
;最后在cmd里mvn -version
查看是否成功。 - 配置本地仓库:修改
conf/settings.xml
中的<localRepository>
标签(用于存放下载的jar包,默认注释了的,要取消注释),内容为自定义的目录路径(自己找位置创建目录,拿来存放jar包,如D:\Program Files\apache-maven-3.8.6\mvn_resp
,mvn_resp
就是自己创建的)。 - 配置阿里云私服:修改
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>
三、基本使用
(1)常用命令
注:所有命令在pom.xml所在的目录,打开cmd执行。
命令 | 功能 | 示例 |
---|---|---|
compile | 编译 | mvn compile |
clean | 清理 | mvn clean |
package | 打包 | mvn package |
test | 测试(执行项目里test目录下的测试代码) | mvn test |
install | 安装 | mvn install |
(2)生命周期
Maven有三个不同的生命周期,同一声明周期内,执行后面的命令,前面的所有命令会自动执行。
- clean:清理工作。
- default:核心工作,如编译、测试、打包、安装等。
- site(不常用):产生报告,发布站点等。
下图摘取了3个不同生命周期的某一段来展示:
四、IDEA配置Maven
(1)配置环境
- IDEA中File>>Settings
- 搜索maven
- 找到Maven home path选项,设置IDEA使用本地安装的Maven,路径为maven的根目录。
- User settings file:设置Maven配置文件,找到settings.xml并选择。
(2)坐标详解
坐标是资源的唯一标识,用于定义项目或引入项目所需依赖。
坐标主要由三个标签组成:
- groupld:当前Maven项目隶属的组织名称(如com.alibaba)
- artifactld:当前Maven项目名称(通常是模块名,如mysql-connnector-java)
- version:当前项目版本号(如5.1.46)
(3)创建Maven项目
- File>>New>>Project>>选择Maven>>Next(填写相关内容,如下所示)>>Finish创建完成。(完成后省略的目录可以自行手动创建,如test下的resources目录)
- 在java目录下创建包和类即可。
(4)导入Maven项目
- IDEA里的View选项>>Appearance>>Navigation Bar勾选上。
- 最右侧的Maven工具选项>>"+"号>>找到Maven项目下的pom.xml文件,点击OK即可。
(5)插件推荐
- Maven Helper:项目名称上右键>>Run Maven>>可以一键执行Maven命令,省去在cmd执行。
五、依赖管理
在pom.xml的<dependencies>
标签中,用以下格式即可添加jar包(以MySQL为例)
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
技巧:
- 可以设置每次更改pom文件后自动刷新File>>Settings>>Build,Execution,Deployment>>Build Tools>>选择Any changes
- 在pom.xml中,按alt+insert,选择Dependency。
依赖范围
使用<scope>
标签