- 每个项目不需要复制粘贴大量的jar包到WEB-INF,只需要维护一个jar包的引用,也就是“坐标”,实现代码重用
- 可以将当前jar包所依赖的jar包都导入,无需了解依赖的具体jar包。
- jar包冲突,使用最短路径优先原则或者先声明优先原则解决。
- 不需要粘贴大量jar包
- 大项目拆分,maven可以把一个项目拆成多个工程
- 不需要自己下载jar包
- jar包版本统一
- jar包依赖自动载入
- 清理:清理以前编译的旧class字节码文件
- 编译:源代码编译成class字节码
- 测试:调用junit测试
- 报告:
- 打包:web打包成war,java打包成jar
- 安装:将打包得到的文件复制到仓库中制定位置
- 部署:将war复制到servlet容器下,可以运行
* groupId 项目名 * artifactId 模块名 * Version 版本
maven坐标和仓库对应的映射关系:[groupId][artifactId][version][artifactId]-[version].jar
仓库* 本地仓库:当前用户目录.m2repository
* 远程仓库
* 私服:局域网仓库
* 中央仓库:因特网仓库
依赖
* 先去本地仓库找依赖,找不到去中央仓库下载到本地仓库,如果中央仓库找不到则编译失败。 * 如果依赖的自己开发的maven工程,需要先把工程install到本地仓库 * 依赖范围生命周期:包含三套生命周期* Compile 默认值,所有阶段都会存在 * Provided 开发测试阶段有效 * Runtime 只在运行和测试有效 * Test 只在测试有效 * System 类似于provided 需要自己提供包含依赖的jar * 依赖传递性:必须是compile范围的依赖,才可以依赖传递 * 什么是依赖传递:a依赖b,b依赖c,则c必须先mvn install然后b再mvn install a才能编译通过。 * 为c增加一个依赖d,a和b也会自动增加依赖d * 依赖版本原则 * 路径最短原则 * 路径相同,先声明优先原则 * 统一管理依赖的版本:使用properties标签,自定义标签名,需要时候使用${自定义标签名}
* Clean lifecycle * default-lifecycle * Site lifecycle插件:每个阶段都有插件,用来执行对应的生命周期的命令
- 不管执行生命周期哪个阶段,都是从头开始执行的。



