以下内容笔记来自慕课网视频《项目管理利器——maven》
笔记参考:https://blog.csdn.net/qq_33547950/article/details/51865451
[toc]
第一章 课程概y述
第二章 maven快速入门
2-1 maven介绍及环境搭建
maven介绍
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
环境搭建
1.下载maven并解压
http://maven.apache.org/download.cgi.apache-maven-3.5.2-bin.zip
2.maven目录结构
bin:包含mvn的运行脚本,其中m2.conf是配置文件
boot:包含一个类加载器的框架,maven使用它来加载自己的类库。
conf:配置文件目录,经常用到的settings.xml。3.配置环境变量
(1)新建系统变量,变量名M2_HOME,变量值指向maven的安装目录xx\maven。
(2)修改Path,在变量值中添加%M2_HOME%\bin。
(3)验证是否配置成功,打开命令行界面,输入mvn -v,可以通过此命令查看maven的版本号、java的版本号,以及系统的一些信息。
2-2 第一个maven案例helloword
maven项目的目录结构
Src.main.java.(package)
项目源代码
Src.test.java.(package)
项目的测试文件
src.resource
存放资源文件的目录创建代码文件
HelloWorld.java(保存在maven01\src\main\java\包名)
1 | package com.imooc.maven01.model; |
HelloWorldTest.java(保存在maven01\src\test\java\包名)
1 | package com.imooc.maven01.model; |
pom.xml(保存在项目根目录中)
1 | <?xml version="1.0" encoding="UTF-8" ?> |
- 编译项目
(1)在命令行界面进入项目根目录执行命令mvn compile,显示BUILD SUCCESS表示编译成功。
(2)输入mvn test测试命令,
(3)在项目根目录下会自动生成target文件夹,其中classes文件夹存放编译后的二进制.class文件,surefire-reports文件夹存放测试报告 。
(4)在命令行界面,项目根目录下,输入mvn package,会在target文件夹中生成项目的jar包。
第三章 maven核心知识
3-1 常用的构建命令
| 命令 | 说明 |
|---|---|
| mvn -v | 查看maven版本 |
| mvn compile | 编译 |
| mvn test | 测试 |
| mvn package | 打包 |
| mvn clean | 删除target文件夹 |
| mvn install | 安装jar包到本地仓库中 |
3-2 自动建立目录骨架
archetype插件
(1)archetype插件用于创建符合maven规定的目录骨架
archetype插件的两种使用方式
(1)命令行界面进入项目根目录,输入mvn archetype:generate命令,根据提示依次输入maven-archetype的版本、groupId、arctifactId、version、package。
(2)或者一次输入所有参数,egmvn archetype:generate -DgroupId:项目包名 -DarctifactId:项目模块名 -Dversion:版本号 -Dpackage:模块包名,根据提示选择maven-archetype版本以及参数的确认。
3-3 maven中的坐标和仓库
maven的坐标
(1)在maven中,任何一个依赖、插件、项目构建的输出等都可以被称为构件。所有构建均通过坐标作为其唯一的标识。
(2)标签groupId、artifactId、version标签就是maven项目的基本坐标。
maven的仓库
maven的仓库用来管理项目的依赖,仓库又分为两种本地仓库和远程仓库。查找项目所需依赖时,先查找本地仓库,再查找远程仓库。
查看maven默认的全球仓库地址
打开maven目录 => bin>maven-model-builder.jar>org\apache\maven\model\pom.xml(ps:maven提供的超级pom,所有maven项目都会继承这个pom) => repository标签下的url标签。
设置镜像仓库
打开maven目录\conf\settings.xml => 找到mirrors标签,输入以下代码:
Code
1
2
3
4
5
6 <mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>设置镜像仓库后,中央仓库将无法访问
阿里镜像仓库:
Code
1
2
3
4
5
6 <mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>设置镜像仓库后,中央仓库将无法访问
更改本地仓库位置
(1)maven默认的本地仓库地址:c:\user\用户.m2\repository
(2)打开settings.xml => 找到localRepository标签 => 输入设置的本地仓库地址,注意:路径文件夹的分隔符要使用“/”。
E:/A2018/2_Maven_learn/repo
复制一份setting.xml到本地仓库:
原因:
1)IDE会找本地仓库里的setting.xml
2)重装maven时,也不用修改配置
3-4 在eclipse中安装maven插件以及创建maven项目
安装maven插件
(1)eclipse4.0及以上版本自带maven插件,无需额外安装。
创建maven项目
New => Maven => Maven Project =>2*next => 选择maven的目录模板quickstart模板 => next => 输入项目坐标 => finish
运行maven项目
eclipse的项目目录下pom.xml右键 => Run As => Maven Build => 在Goals文本框输入compile命令 =>run
3-5 maven的生命周期
完整的项目构建过程
清理、编译、测试、打包、集成测试、验证、布署
maven项目的生命周期
maven包括三套独立的生命周期,clean(清理项目)、default(构建项目)、site(生成项目站点)。每个生命周期又包含一些阶段,各个生命周期的阶段是有顺序的,且后面的阶段依赖于前面的阶段,执行某个阶段时其前面的阶段会依次顺序执行,但不会触发另外两套生命周期的任何阶段。
clean的阶段
| 阶段 | 说明 |
|---|---|
| pre-clean | 执行清理前的工作 |
| clean | 清理上一次构建生成的所有文件 |
| post-clean | 执行清理后的文件 |
default的阶段
default的阶段比较多,常用的阶段有compile、test、package、install
site的阶段
| 阶段 | 说明 |
|---|---|
| pre-site | 在生成项目站点前要完成的工作 |
| site | 生成项目的站点文档 |
| post-site | 在生成项目站点后要完成的工作 |
| site-deploy | 发布生成的站点到服务器上 |
使用maven的第三方插件
…
3-6 pom.xml解析
pom.xml是maven项目的核心管理文件,用于项目描述、组织管理、依赖管理和构件信息的管理。
pom.xml的常用标签
pom的重要标签(1)
pom的重要标签(2)
pom的其他标签
3-7 依赖范围
scope标签指定依赖的范围,当前项目如果要使用某一个框架,就要把该框架的jar包引入到classpath路径中,这样项目就能使用该框架的方法。maven中提供了三种classpath,分别是编译、测试、运行。依赖的范围就是控制依赖与三种classpath的关系。
scope的六种属性
| 属性值 | 说明 |
|---|---|
| compile | 默认的范围,编译、测试、运行都有效 |
| provided | 在编译和测试时有效 |
| runtime | 在测试和运行时有效 |
| test | 只在测试时有效 |
| system | 在编译、测试有效,但是与本机系统相关联,可移植性差 |
| import | 导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependecy的配置 |
3-8 依赖传递
依赖的传递,指当A依赖B,B依赖C,则A依赖C。
排除传递的依赖
使用exclusions标签
1 | <dependency> |
3-9 依赖冲突
依赖冲突,指有A和B分别依赖于C的不同版本。当D同时依赖于A和B时,则D对传递的依赖C的实际版本是哪一个,需要规则去约定。
| 规则 | 说明 |
|---|---|
| 短路优先 | 即优先选择传递依赖路径最短的版本 |
| 先声明先优先 | 在传递依赖路径长短相同时,先声明的依赖路径先选择 |
3-10 聚合和继承
聚合:将多个项目一起进行install命令,安装到本地仓库中的方法叫聚合
步骤:新建maven项目 => 将pom.xml中的packaging标签内容修改为”pom” => 在pom.xml中加入如下代码:
1 | <modules> |
继承:多个maven项目需要依赖同一个框架或maven项目。
步骤:
(1)新建maven项目 => 将pom.xml中的packaging标签内容修改为”pom” => 在pom.xml中加入如下代码:
1 | <dependencyManagement> |
(2)在需要继承的项目pom.xml中,加入
1 | <parent> |
第四章 如何构建web项目
4-1 使用maven构建web项目
- 用eclipse新建maven项目
- 在maven中央仓库http://mvnrepository.com中查找servlet坐标,并添加到项目pom.xml文件中
- …


