概述:
maven是一个项目管理工具,包含了一个项目对象模型(pom:project object model),一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑。
maven解决的问题:
1)引入并管理jar包;
2)编译java文件;
3)可进行单元测试,检验代码质量;
4)打包(将代码以及配置文件、资源整合)方便。
maven核心功能:
1)依赖管理
2)一键构建
maven仓库种类:本地仓库、远程仓库【私服】、中央仓库
执行顺序:本地仓库 ——> 远程仓库【私服】——> 中央仓库
maven默认目录结构:
描述 | 文件路径 |
---|---|
核心代码部分 | src/main/java |
配置文件部分 | src/main/resources |
测试代码部分 | src/test/java |
测试配置文件 | src/test/resources |
页面资源( js,css) | src/main/webapp |
maven常用命令:
命令 | 描述 |
---|---|
mvn clean | 将项目的编译信息进行清除 |
mvn compile | 将src包下的代码进行编译放置target文件夹下 |
mvn test | 把test包下的代码编译至test-classes,同时也会编译main包下的代码 |
mvn package | 将项目进行打包放置target包下,打包方式是在项目pom.xml中packaging标签下指定 |
mvn install | 将项目进行打包放置target包且将打好的包放置本地库 |
maven生命周期三种:
1)默认生命周期
编译 -> 测试 -> 打包 -> 安装 -> 发布
mvn compile -> mvn test -> mvn package -> mvn install -> mvn deploy
2)清理生命周期
清除项目编译信息 :mvn clean
3)站点生命周期 (后期补充)
如何解决依赖冲突:
1)第一声明优先原则
哪个jar包的坐标在靠上的位置,这个jar包就是先声明的,就可以优先进入项目中;
2)路径近者优先原则
直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖包;
3)直接排除法
当我们要排除某个jar包下的依赖包,在配置exclusions标签的时候,内部可以不写版本号,此时依赖包使用的版本和默认jar一样。
补充:
直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包;
传递依赖:项目中没有直接导入的jar包,通过项目直接依赖jar包传递到项目中去。
学习笔记! 如有不正确的地方请指正,感谢!