Maven是一个项目管理工具,可以对进行项目构建和依赖管理
项目构建
指项目从开发到最终完成的过程:编译、测试、打包、部署上线
一、MAVEN目录结构
编写测试代码规则:
- 类名写成:XxxTest的形式,如:UserTest
- 方法名写成:testXxx()的形式,如:testLogin。方法的权限必须为public、返回值应当为void、不能传入参数、必须有个注解@Test
二、Maven基本命令
Maven 将整个构建过程分为多个阶段,每个阶段对应 maven 中的一个命令。
比如下面命令:
clean命令,对应的是上述的清理阶段,用于清除生成的 class 字节码文件
compile命令,对应上述的编译阶段,用于将 java 文件遵循一个原则编译成 class
字节码文件
test命令,测试项目 执行test目录下的测试用例
package命令,对应上述的编译阶段,用于将 java 打包成 jar 包或者 war 包
依赖管理
一、之前项目的痛点
- 需要频繁地去把每个应用所需要的包导入当前应用中
- 有些jar包的运行需要依赖其他包支撑
Maven可以极好地处理这些问题
二、设置国内镜像
也就是设置远程仓库。因为 maven 中央仓库位于国外,所以如果本地仓库没
有对应的 jar 包,那么需要从中央仓库去下载,速度比较慢。
复制如下代码到conf/settings.xml文件中的mirror结点中即可
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
三、设置本地仓库(可选)
在conf/settings.xml文件中的settings结点下设置
<localRepository>D:\repository</localRepository>
如果本地仓库已经有了对应的jar包,那么当你在加载某个类时,就不会再去远程仓库下载该jar包了。
四、依赖的格式
在pom.xml文件中设置项目的依赖
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <!-- 模型版本 -->
<groupId>com.cskaoyan.project</groupId> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven 会将该项目打成的 jar 包放本地路径:
/com/companyname/project-group -->
<artifactId>hello</artifactId><!-- 项目的唯一 ID,一个 groupId 下面可能多个项目,就是靠 artifactId 来区分的 -->
<version>1.0</version> <!-- 版本号 -->
<dependencies>
<dependency> <!-- 依赖设置 -->
<groupId>junit</groupId> <!-- 依赖组织名称 -->
<artifactId>junit</artifactId> <!-- 依赖项目名称 -->
<version>4.12</version> <!-- 依赖版本名称 -->
<scope>test</scope> <!-- 依赖范围:test 包下依赖该设置 -->
</dependency>
</dependencies>
</project>
查找项目坐标:https://mvnrepository.com/
五、scope依赖范围
六、依赖传递
比如说:项目一依赖项目二(第一依赖),项目二依赖commons-fileupload(第二依赖),根据依赖的传递性,项目一也可以拿到commons-fileupload依赖。
如果第二依赖是test、provided,传递会断层
七、依赖冲突
比如项目引用了依赖 A,A 引用依赖 C(v1.1)
又引用了依赖 B,B引用依赖 C(v1.2)
原则:
- 第一声明者优先原则
- 路径近者优先原则
- 依赖排除(使用exclusion标签)
- 提取常量(全部采用同一个版本)