Maven
简单介绍
介绍
Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。
需要依赖java的环境特点
可以根据指定版本自动解决 jar 包版本兼容问题,并且把所依赖的其它 jar 包自动下载并引入项目。构建过程的几个主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应war包。
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行
目录结构
1 | Hello |
POM文件
即 Project Object Model 项目对象模型。Maven 把一个项目的结构和内容抽象成一个模型,在 xml 文件中进行声明,以方便进行构建和描述,pom.xml 是 Maven 的灵魂。
属性 | 表示的信息 |
---|---|
modelVersion | Maven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0 |
groupId | 组织id,一般是公司域名的倒写。格式可以为: 域名倒写。 例如 com.baidu; 域名倒写+项目名。例如 com.baidu.appolo |
artifactId | 项目名称,也是模块名称,对应 groupId 中 项目中的子项目。 |
version | 项目的版本号。如果项目还在开发中,是不稳定版本, 通常在版本后带-SNAPSHOT; version 使用三位数字标识,例如 1.1.0 |
packaging | 项目打包的类型,可以使 jar、war、rar、ear、pom,默认是 jar |
dependencies 和 dependency | Maven 的一个重要作用就是管理 jar 包,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的 jar 包,在 Maven 中,这些 jar 就被称为依赖,使用标签 dependency 来配置。而这种依赖的配置正是通过坐标来定位的,由此我们也不难看出,maven 把所有的 jar 包也都视为项目存在了。 |
properties | properties 是 用 来 定 义 一 些 配 置 属 性 的 , 例 如 project.build.sourceEncoding(项目构建源码编码方式),可以设置为 UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。 |
build | build 表示与构建相关的配置,例如设置编译插件的 jdk 版本 |
parent | 在 Maven 中,如果多个模块都需要声明相同的配置,例如:groupId、version、有相同的依赖、或者相同的组件配置等,也有类似 Java 的继承机制,用 parent 声明要继承的父工程的 pom 配置。 |
modules | 在 Maven 的多模块开发中,为了统一构建整个项目的所有模块,可以提供一个额外的模块,该模块打包方式为 pom,并且在其中使用 modules 聚合的其它模块,这样通过本模块就可以一键自动识别模块间的依赖关系来构建所有模块,叫 Maven 的聚合。 |
仓库
中央仓库
存放全球市面上所有的主流第三资源包的一个仓库其本质就是一个网站。
网站:https://mvnrepository.com/镜像仓库
jar服务器是在国外,国内下载速度可能受限,因为国内某些IT公司做了一个镜像服务器,将中央仓库的所有jar包全部都镜像到国内服务器。
阿里巴巴的镜像仓库。
网址:maven.aliyun.com本地仓库
从远程仓库下载的jar包的存放位置。
本质就是磁盘上的一个文件夹而已。
修改仓库
修改配置文件:apache-maven-3.5.4\conf\settings.xml
1 | localRepository:本地仓库 |
版本统一
如多个jar包配合时,要保持同一个版本(如spring)
1 | <properties> |
继承后排除某个子包
exclusion标签
例如:zookeeper排除slf4j日志包
1 | <!--zookeeper--> |
maven项目常用的两个创建方式
org.apache.maven.archetypes:maven-archetype-quickstart
普通项目org.apache.maven.archetypes:maven-archetype-webapp
web项目
打包
在maven项目目录下输入命令mvn package