Maven的简单介绍
1:下载后的maven中有四个文件夹,分别是bin,boot,conf,lib
bin:包含mave的运行脚本,在命令行中输入mvn就会调用这些脚本,其中m2.conf是一个配置文件
boot:包含了一个类加载器的框架,用它加载自己的类库
conf:里面是配置文件
lib下是maven运行时所包含的类库
2:maven中的常用标签
groupId:的值就是项目的包名
artifactId:的值是模块名,建议使用项目名进行标识
version:版本
packaging:打包的格式,默认jar包 如下图
dependencies:依赖列表 (后面为依赖列表里用到的标签)
dependency:依赖项
optional:设置依赖是否可选 默认为false表示继承的依赖 true表示必选显示已引入该依赖
3:maven的命令;
mvncompile:对该项目进行编译
mvntest:测试的
mvnpackage:对mvn进行打包
mvnclean:删除
mvninstall 安装jar包到本地仓库中
4:maven中使用插件
如使用Source插件:用于将源码打包
上图的意思是使用source插件,在package阶段,运行source
5:maven中的依赖关系
依赖范围
依赖传递:
D→C→B→A D在导入C的依赖时就自动获得了B和A的依赖
如果这时D不想要A的依赖,只需要使用标签排除A就能去除掉A及其A内部所有依赖的包,如下图所示
依赖冲突:指通过依赖传递同时依赖了同一个jar包的不同版本
短路优先原则:会优先解析最短的依赖路径上的jar包版本,如果路径长度相同,则谁先声明,先解析谁
同样是D→C→B→A的场景,B依赖了commons-io2.5版本,C依赖了commons-io 2.0版本这时D会按照短路优先原则解析C中的2.0版本而非B中的2.5版本
6:maven的聚合和继承
聚合:把其它maven项目聚合在一起,install打包到仓库时会将所有聚合在一起的maven项目打包
继承:一个maven项目可以继承一个<packaging>为pom包的maven项目,从而使用里面定义版本的jar 具体如下图
父类的maven
子类的maven
在聚合和继承中常用的标签
<properties>:在其中自定义标签,然后可以在其它地方通过${定义的标签}来引用标签的值
<modules>:在此标签内通过<module>标签定义聚合在一起的maven项目有哪些
<dependencyManagement>:在此标签内引入的jar包不会在此项目中使用
<parent>:次标签用于设置继承哪个maven项目