入门
配置环境:mvn -v 检查是否配置好环境变量
目录结构:
核心知识
maven常用构建命令
在一个项目中引用本地另一个项目的类时,需要在另一个项目中使用 mvn install 将其jar包安装到本地仓库,然后在本项目的pom.xml文件的<dependency>中声明。
maven引入构建包的流程:首先是mvn compile进行编译,编译过程中如果用到了其他的包,就会去pom.xml中查找,是否有该依赖包的坐标,也就是<dependency>...</dependency>标签中的内容,然后会去本地仓库中查找,若本地仓库中没有就回去maven的中央仓库中查找并下载到本地仓库,供项目使用。
自动创建目录骨架
maven中的坐标和仓库
坐标:构件是mvn中的每个子项。坐标是用来唯一标识构件的,坐标用groupId、articleId、version标识
仓库:本地仓库与全球仓库,全球仓库一般访问速度慢或者网路原因不稳定
镜像仓库:设置镜像仓库在setting.xml中设置,mirrors中的注释有示例,只需要修改mirror
更改仓库位置:默认是C:Users***.m2。修改也是在settings.xml中修改
maven生命周期和插件
maven中定义了三套相互独立的生命周期,每个生命周期有自己的阶段,各个阶段有顺序,后面的阶段依赖于前面的阶段
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">
<!-- 指定了当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式,默认是jar -->
<packaging>war</packaging>
<!-- 项目描述名 -->
<name>maven_demo Maven Webapp</name>
<!-- 项目地址 -->
<url>http://www.example.com</url>
<!-- 项目描述 -->
<description></description>
<!-- 开发人员 -->
<developers></developers>
<!-- 组织信息 -->
<organization></organization>
<!-- 许可证信息 -->
<licenses></licenses>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope> <!-- 依赖范围 -->
<optional></optional> <!-- 设置依赖是否可选 -->
<exclusions> <!-- 排除依赖传递列表 -->
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖管理 -->
<dependencyManagement>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
<!-- 子模块对父模块pom.xml的继承 -->
<parent></parent>
<!-- 聚合多个maven项目 -->
<modules>
<module></module>
</modules>
</project>
依赖范围讲解:
maven提供了三种classpath:编译、测试、运行
有6种依赖范围:
Maven依赖传递
maven是按模块组织的,一个项目可能有多个maven,这就有可能在C maven项目中依赖B maven项目,在B maven项目中依赖A maven项目,这就需要在B 的pom.xml中的<dependency></dependency>中声明A的坐标,在C 的pom.xml中的<dependency></dependency>中声明B的坐标,注意这时候需要将A B安装到本地仓库
Maven依赖冲突
Maven聚合和继承
maven是按模块组织的,一个项目可能有多个maven,为更快速的对所有项目进行编译,可以将新建一个Maven项目,然后在pom.xml中使用modules进行聚合,统一install即可
<!-- 聚合多个maven项目 --> <modules> <module></module> </modules>