什么是Maven
Maven是Apache基金会的开源项目,使用Java语法开发,Maven是项目的自动化构建工具,管理项目的依赖。
类似的构建工具还有:Ant,Gradle
Maven能做什么
(1)项目的自动构建,帮助开发人员做项目代码的编译、测试、打包、安装、部署等工作;
(2)管理依赖
依赖:项目中需要使用的其他资源,常见的是jar;
备注:没有Maven时,管理jar,需要从网络中单独下载,需要选择正确版本, 手工处理jar文件之间的依赖
Maven中的概念
约定的目录结构
目录 | 目的 |
---|---|
${basedir} | 存放 pom.xml 和所有的子目录 |
${basedir}/src/main/java | 项目的 Java 源代码 |
${basedir}/src/main/resources | 项目的资源,比如说 property 文件,springmvc.xml |
${basedir}/src/test/java | 项目的测试类,比如说 Junit 代码 |
${basedir}/src/test/resources | 测试用的资源 |
${basedir}/src/main/webapp/WEB_INF | web 应用文件目录,web 的项目信息,比如存放 web.xml、本地图片、jsp 视图页面 |
${basedir}/target | 打包输出目录 |
${basedir}/target/classes | 编译输出目录 |
${basedir}/target/test-classes | 测试编译输出目录 |
Test.java | Maven 只会自动运行符合该命名规则的测试类 |
~/.m2/repository | Maven 默认的本地仓库目录位置 |
配置文件
类型 | 在哪定义 |
---|---|
项目级(per Project) | 定义在项目的 POM 文件 pom.xml 中 |
用户级(Per User) | 定义在 Maven 的设置 xml 文件中(%USER_HOME%/.m2/settings.xml) |
全局(Global) | 定义在 Maven 的全局设置 xml 文件中(%MAVEN_HOME%/conf/settings.xml) |
POM
Project Object Model项目对象模型,Maven把项目当做模型处理。
Maven通过pom.xml文件实现项目的构建和依赖的管理。
1 |
|
(1)坐标
坐标组成是 groupId artifactId version
坐标的作用:确定资源,是资源的唯一标识,简称gav
1 | <groupId>edu.stanford.cs.crypto</groupId> groupId:组织名称,组织域名倒写 |
备注:版本号中带-SNAPSHOT表示快照,为不稳定版本,Release 则代表稳定的版本。
项目中使用gav
1、每个Maven项目,都需要有一个自己的gav
2、管理依赖,需要使用其他jar,也需要使用gav作为标识
(2)依赖管理
1 | <dependencies> |
仓库管理
Maven仓库存放Maven工具jar包,第三方jar包,自己编写的jar包
仓库的分类:
1、本地(local):
默认路径:C:\Users\Ivresse\.m2\repository
修改本地仓库位置,修改安装目录apache-maven-3.8.4\conf\settings.xml文件中
2、中央(central): Maven 社区提供的仓库
要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse,使用这个仓库,开发人员可以搜索所有可以获取的代码库,或者使用https://mvnrepository.com/。
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库,配置指南。
修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:
1 | <mirror> |
如果想在项目中使用其它代理仓库,可在
1 | <repository> |
全局配置则将上述配置写在
1 | <settings> |
3、远程(remote):开发人员自己定制仓库
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
- 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
- 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
- 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
- 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
生命周期
项目构建的各个阶段,包括清理、编译、测试、打包、安装、部署。
插件和命令
要完成构建项目的各个阶段,要使用Maven命令,执行命令的功能是通过插件完成的,插件就是jar包,一些类。
Maven命令
1 | mvn -v |