准备工作:
下载maven软件包
http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip
解压到本地硬盘,复制bin路径并添加到系统path路径下。
运行cmd后,输入 mvn -version能正确输出即安装完成
创建maven项目
1. 本地目录新建项目名目录,并手动编辑pom.xml文件,举例如下:
<?xml version="1.0" encoding="UTF-8" ?>
<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>cn.yf.maven.hello</groupId> <!--项目的名称 -->
<artifactId>hello-first</artifactId> <!--hello项目的first模块名称,一般用 “项目名称 - 模块名称”的格式 -->
<version>SNAPSHOT-0.0.1</version> <!-- 项目版本名称 -->
<!--依赖 -->
<dependencies>
<!-- junit的依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2. 创建和测试代码
源代码目录路径 src/main/java
测试代码路径 src/test/java
资源文件路径 src/main/resources
测试资源文件路径 src/test/resources
3. 运行maven
mvn clean -- 运行清理操作,默认会把target文件夹中的数据清理
mvn clean compile -- 表示先运行清理,之后运行编译,会将代码编译到target文件夹中
mvn clean test -- 运行清理和测试
mvn clean package --运行清理和打包
mvn clean install -- 运行清理和安装,会将打好的包安装到本地仓库中,以便其它项目可以调用
mvn clean deploy --运行清理和发布,发布到私有服务器
mvn archetype:generate --自动生成maven骨架项目
4. 依赖的查找
所有的依赖都是通过坐标来进行存储的
(GAV --> groupId, artifactId, version)
通过网上的仓库提供坐标查询(http://mvnrepository.com)
通过<dependencies>设置依赖
maven搜索依赖,首先会在本地仓库查询,如果本地仓库没有,再去中央仓库查询。
5. 依赖的传递性
依赖是会被传递的
例如 A-->C B-->A ==> B依赖C,这种依赖是基于compile这个范围进行传递
如果没有写scope,默认的scope是compile范围
test范围指的是测试范围有效,在编译和打包时候都不会使用这个依赖
compile范围指的是编译范围有效,在编译和打包都会将依赖存储进去
provided依赖,在编译和测试的过程有效,最后生成war包时不会加入,诸如servlet-api ,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突。
runtime在运行的时候依赖,在编译的时候不依赖。
6. 传递性依赖冲突
a--> b 1.0
c--> b 1.1
d-->a和c
在d的pom中,a和c,哪个依赖先写,则使用b的哪一个版本。
另外一种情况
a-->b 1.0
c-->b 1.1
d-->a和c ,则d -->b 1.0
f-->d和c,则f-->b 1.1(如果路径的长短不一致,则选择最小路径。)
手动排除低版本依赖:
<exclusions>
<exclusion> ...</exclusion>
</exclusions>