构建环节
操作 | 说明 |
---|---|
①清理 clean | 删除以前的编译结果,为重新编译做好准备 |
②验证 validate | 验证项目 验证项目是否正确且所有必须信息是可用的 |
③编译 compile | 执行编译 源代码编译在此阶段完成 |
④测试 Test | 测试 使用适当的单元测试框架(例如JUnit)运行测试 |
⑤包装 package | 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
⑥检查 verify | 检查 对集成测试的结果进行检查,以保证质量达标 |
⑦安装 install | 安装 安装打包的项目到本地仓库,以供其他项目使用 |
⑧站点 site | 生成项目的站点文件 |
⑨部署 deploy | 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
Maven九个核心概念
核心 | 说明 |
---|---|
①POM | dtd规范或者schema规范 |
②约定的目录结构 | 约定>配置>编码 |
③坐标 | gav坐标以及scope依赖范围 |
④依赖管理 | 依赖的传递性、传递遵循的规则、依赖的排除、统一版本管理 |
⑤仓库管理 | |
⑥生命周期 | |
⑦插件和目标 | |
⑧继承 | |
⑨聚合 |
③坐标
scope依赖范围:
- compile:编译范围【默认值】
这个范围的包,可以给main和test下面类使用;该jar包会参与部署,部署到服务器 - test:测试范围
这个范围的包,只给test下面的类使用;main下面的类不能用。不参与部署。 - provided:提供范围。
这个范围的包,可以给main和test下面类使用;该jar包不参与部署(Tomcat本身提供)。 - runtime:运行时范围
这个范围的包,只给test下面的类使用;main下面的类不能用。参与部署。 - import、system
④依赖管理
依赖的传递性
compile范围具有传递性,test和provided不具有传递性。
依赖的传递遵循“路径最短者优先;路径相同时先声明者优先”的原则(这里的声明的先后是指dependency标签的先后顺序)
依赖的排除
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>xxx</version>
<exclusions>
<exclusion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
</exclusion>
</exclusions>
</dependency>
统一版本管理
<properties>
<spring.version>1.0.0.RELEASE</spring.version>
</properties>
⑤仓库管理
本地仓库、远程仓库、私服、中央仓库、中央仓库镜像
⑥生命周期
Maven有三套相互独立的生命周期,分别是:
①Clean Lifecycle在进行真正的构建之前进行一些清理工作。
②Default Lifecycle构建的核心部分,编译,测试,打包,安装,部署等等。
③Site Lifecycle生成项目报告,站点,发布站点。
再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行mvn clean install site
运行所有这三套生命周期。
每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean
,这个clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。
⑦插件和目标
- Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
- 每个插件都能实现多个功能,每个功能就是一个插件目标。
- Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。
例如:compile就是插件maven-compiler-plugin的一个功能;pre-clean是插件maven-clean-plugin的一个目标。
⑧继承
父项目中使用标签,将共用的依赖加进来,然后在子工程中根据av坐标应用即可。并且得配置父工程的打包方式为pom
⑨聚合
在父工程中通过 标签来引入模块
<modules>
<module>xxx</module>
</modules>