目录
Maven坐标
坐标简介
主要组成
Maven依赖管理
配置依赖
依赖简介
配置依赖
依赖传递
依赖传递简介
排除依赖
依赖范围
生命周期
生命周期简介
执行指定生命周期
Maven坐标
坐标简介
Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
可以使用坐标来定义项目或引入项目中需要的依赖。
主要组成
groupld 定义当前Maven项目隶属组织名称
artifactld 定义当前Maven项目名称(通常是模块名称 例如order-service,goods-service)
version 定义当前项目版本号
Maven依赖管理
配置依赖
依赖简介
当前项目运行所需要的jar包,一个项目可以引入多个依赖
配置依赖
- 在pom.xml中编写<dependencies>标签
- 在<dependencies>标签中使用<dependency>引入坐标
- 定义坐标的groupld,artifactld,version
- 点击刷新按钮,引入新添加的坐标
<dependencies>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
如果引入的依赖在本地仓库不存在,将会连接远程/中央仓库,然后下载依赖。
如果不知道依赖的坐标信息,可以在中Maven仓库官网中搜索
依赖传递
依赖传递简介
依赖具有传递性
直接依赖 在当前项目中通过依赖配置建立的依赖关系
间接依赖 被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
排除依赖
由于依赖传递的特性,如果我们需要b项目,但不需要b项目依赖的某个项目,可以通过如下方式排除该依赖
以排除projectA由于依赖projectB,而依赖的junit为例
插入exclusions标签,并在groupId,artifactId中填写要排除的依赖,不需要指定版本
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
重新加载,发现projectA不再依赖于junit
依赖范围
依赖的jar包,默认情况下可以在任何地方使用。
可以通过<scope>标签设置其作用范围
作用范围
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包运行(package指令范围内)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
comile(默认) | √ | √ | √ | log4j |
test | × | √ | × | junit |
provided | √ | √ | × | servlet-api |
runtime | × | √ | √ | jdbc驱动 |
生命周期
生命周期简介
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段
有三套生命周期 clean default site
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行(运行install,clean不会运行因为他们不属于同一套生命周期)
主要关注如下五个阶段
clean 移除上一次构建生成的元素
compile 编译项目源代码
test 使用合适的单元测试框架进行测试(junit)
package 将编译后的文件打包,如jar,war
install 安装项目到本地
执行指定生命周期
- 在idea右侧的maven工具栏选中对应的生命周期双击
- 在命令行中通过命令执行 如mvn compile