Maven的作用
项目构建
依赖管理:避免资源间版本冲突问题
统一开发结构:提供统一的项目结构
Maven的使用
下载完压缩包之后放在合适的目录下,其中apache-maven-3.8.8文件夹是安装的maven,下面的repository是本地仓库,其中要修改setting.xml下的仓库路径,设置阿里云镜像。
将这里的路径改为自己设置的 repository 仓库的路径。
这个<mirror>写在<mirrors>中,在注释里面会有mirror的模板。
Maven项目构建命令
手动创建
使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔
mvn compile #编译
mvn clena #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库
插件创建
依赖管理
依赖传递
- 依赖有传递性
- 直接依赖:在当前项目中通过配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
- 路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置位置靠前的覆盖废纸顺序靠后的
- 特殊优先:当统计配置了相同层级的不用版本,后配置的覆盖先配置的
可选依赖
指对外隐藏当前所依赖的资源——不透明
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version>
<optional>true</optional>
</dependency>
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions>
</dependency>
依赖范围
依赖的jar包默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
生命周期和插件
clean:清理工作
default:核心工作,例如编译,测试,打包,部署等
site:产生报告,发布站点等
插件
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
- 默认maven在各个生命周期上有预设的功能
- 通过插件可以自定义其他功能