Maven 知识梳理

来源:互联网 发布:mac安装ps软件教程 编辑:程序博客网 时间:2024/06/05 09:08

Maven 知识梳理

Maven应用之广泛不用多说,我也用maven很久了。趁着现在时间比较宽裕,这里对maven的知识做一个系统总结。

一:什么是maven

一句话:项目的构建,管理,jar包管理的工具。

二:maven 的环境搭建

网上资料太多,我这里不在专门写,可参考下边的这篇文章。
http://www.cnblogs.com/quanyongan/archive/2013/04/17/3025971.html

三:maven约定好的目录结构:

这里写图片描述

四:maven常用的构建命令

mvn -v 查看maven的版本
mvn -compile 编译我们的代码
mvn -test 测试我们的代码,默认回去执行test的里边的使用@Test小时的测试方法

clean 删除targert(maven生成的目标文件),
install 将jar包安装到本地仓库;

五:Maven的坐标,构件,和仓库

坐标:这里写图片描述
建议在创建maven项目的时候,包名应该和groupId和artifactId相吻合。这样看起来就更加清晰,复合逻辑,也便于搜索。

5.1 仓库

本地仓库和全球仓库

六:Maven生命周期

clean:清理项目

clean的生命周期包括三个阶段:
pre-clean 执行清理前的工作。
clean 执行上一次构建生成的所有文件
post clean 执行清理后的文件

default 构建项目(最核心)

compile
test
package
install

site 根据pom文件生成项目站点

pre-site 在生成站点前所完成的工作
site:生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点在服务器上

执行生命周期中的某个阶段,其前边的阶段会顺序的依次执行。
在生命周期中插入一个小插件实例:
这里写图片描述
这个插件的作用是:在进行package阶段的时候,会对项目的源码进行打包。

七:pom文件

pom文件的作用是maven项目的核心管理文件,用于项目描述,组织管理,依赖管理,构建信息的管理。
这里写图片描述

packing是指打包方式。比如是jar还是war包,还是zip或者pom。
这里写图片描述这里写图片描述这里写图片描述
这里写图片描述

其中在 标签中可能还含有标签,改标签的作用为指定该依赖的作用范围。
其中三种classpath
1 编译
2 测试
3 运行
scope通过控制对应的classpath,来控制作用范围;

scope 的值有下边的几种:

compile:默认的范围,编译测试运行都有效
provided:编译测试的时候有效,比如使用servlet的api的时候,我们可以通过maven来进行依赖,但是在运行的时候不能将其计入进去,因为web容器已经包含了servlet,如果maven再将其打包到calsspath中,就会产生冲突。
runtime:在测试和运行的时候有效。
test:在测试的时候有效。
system:也是在测试和运行的时候有效,但是跟本地系统的关联性特别强,可移植性特别差;比如他会依赖本地的java_home,一直到其他的系统,就会出现问题。
import:导入的范围,他只使用在dependency中,表示从其他的pom中导入dependency的配置。
例如:
这里写图片描述

八:maven的传递依赖

A依赖B,B依赖C,则A依赖C;

排除依赖

这里写图片描述

依赖原则

短路优先

比如
A -> B -> C ->D1 (JAR)
A->C->D2(JAR)
其中,D1和D2代表不同的版本。
在上边的情况下,A会优先解析D2。

在路径长度相同的情况下,先声明先依赖。

九:聚合和继承

聚合

这里写图片描述

继承

这里写图片描述