MAVEN学习笔记

Posted by BY on July 19, 2018

maven是什么

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

maven常用的构建命令

mvn -v 查看maven版本

mvn compile 编译 mvn test 测试 mvn package 打包

mvn clean 删除target mvn install 安装jar包到本地仓库

maven自动建立目录骨架

创建目录的两种方式

  1. archetype:generate 按照提示进行选择
  2. archetype:generate -DgroutId=组织名,公司网址的反写+项目名 -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所存在的包名s

maven中的坐标和仓库

坐标:任何一个依赖、插件、项目中的输出都可以被称为构建,所有构建通过坐标作为其为一个标识。

maven的生命周期

完整的项目构建过程包括:清理、编译、测试、打包、集成测试、验证、部署。

maven生命周期:clean(清理项目)、default(构建项目)、site(生成项目站点)

对于clean清理项目,它分为三个阶段:

  • pre-clean 执行清理前的工作
  • clean 青离上一次构建生成的所有文件
  • post-clean 执行清理后的文件

对于default构建项目来说,它是生命周期中最核心的: compile test package install

对于site生成项目站点,它会根据pom中的信息自动生成站点,它又分别有一下几个阶段:

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

pom.xml常用元素介绍

pom的根元素,用来保存pom的项目信息。 指定了当前pom的版本。 反写公司网址+项目名 项目名+模块名 x.x.x * 第一个x表示大版本号 * 第二个x表示分支版本号 * 第三个x表示小版本号 * snapshot 快照 * alpha 内部测试 * beta 公测 * Release 稳定 * GA 正式发布 默认是jar 项目名 项目地址 项目描述 开发者信息 许可证信息 组织信息 依赖信息,改标签可嵌套 子模块中对父模块的继承 用来聚合运行多个module 项 ## 依赖的范围 scope的属性 * compile 默认的范围,编译测试运行都有效 * provided 在编译和测试时有效 * runtime 只在运行时有效 * test 只在测试时有效 * system 与本机系统相关联,可移植性差 * import 导入的范围,它只使用在dependencyManagement中,表示从它的pom中导入dependecy的配置 ## 依赖的传递 A 依赖 B,B 依赖 C,那么A简介依赖C。 ## 依赖的冲突 1. 短路优先 A->B->C->X(jar) A->D->X(jar) 这条路会优先解析 2. 优先声明优先 如果路径长度相同,则谁先声明,先解析谁