前言:从零到一基于Spring Cloud 微服务架框广告系统之Maven介绍以及新特性的小白篇。
Maven介绍
Maven是一个项目的构建和管理的工具,它提供了构建 报告文档 和依赖发布 分发等等方法,可以方便的管理代码进行依赖管理二进制库。
优势:可以将项目依赖化自动化高效化以及强大的可扩展性,Maven自身插件可获得代码检查报告 单元测试覆盖率实现持续集成。
基本样式
注:
1,POM代表工程对象模型,它是使用Maven工作时的基本组建,是一个xml文件
2,它被放在工程根目录下,文件命名位pom.xml
3, POM包含了关于工程和各种配置的信息(版本成员 插件 依赖和项目的目标等),Maven可继承使用了这些信息构建工程。(存在父模块和子模块)
关于代码的相关解释:
<project>//POM的顶级结构以及文件的顶级元素
<modelVersion>4.0.0</modelVersion>//版本
字节点添加的包,坐标形式
<depences>
<depency>
坐标
</depency>
</depencies>//依赖 子节点会添加依赖的包
</project>
坐标
groupId:卡包相关的项目,如:com.imooc.passbook
artifactid:工程的卡包,通常与groupld在一起定义仓库的位置
version:工程的版本号,区分不同的版本
Maven常用命令
mvn -v //查看版本
mvn complie //编译 将java源文件编译成class文件
mvn test//执行test目录下的测试用例
mvn package//打包 将java工程打包成jar包以及坐标
mvn clean//清理环境 清除target文件夹
mvn install//安装 将当前项目安装到maven的本地仓库
Maven相关特性
传递依赖
定义:项目在引用一个jar包而该架包引用了另一个jar包,项目在编译的时候会把Maven的直接引用和间接引用的jar包会直接下载到本地,默认情况下会下载到本地的home目录.
排除依赖
定义:我们只想下载直接引用的jar包,那么需要在pom.xml做如下配置:
<dependency>
<groupId> org.apache.hbase </groupId>
<artifactId> hbase </artifactId>
<version>0.94.17</version>//想要使用hbase的jar包
若不使用hbase里的commmons-logging的jar包
<exclusion>//用这个进行排除策略
<groupId> commmons-logging </groupId>
<artifactId> commmons-logging </artifacted>
</exclusion>
</dependency>
依赖冲突
注:相同的jar包相同的版本不存在冲突
短路优先
本项目->A.jar ->B.jar ->X.jar
本目录->C.jar->X.jar
声明优先
引用路径长度相同时,在pom.xml谁先被声明,就适用谁
多模块项目/聚合
父模块pom文件的配置:packaging类型必须是pom
<packaging> pom </packaging>
聚合子模块:使用modules标签
<modules>
<module> </module>
<module> </module>
</modules>
父模块统一管理依赖包:使用dependencyManagement标签
作用:管理jar包的版本而不显示列出版本号,会一直沿着父子模块往上走到Management元素的项目指定的版本号,若使用另一个版本号只需要在前面声明即可。
<dependencyManagement>
坐标系
</dependencyManagement>
子模块需要在pom中声明父模块:使用parent标签
<parent>
坐标系
</parent>