依赖管理
依赖配置
<dependency>
<groupId>ch.qos.logback</groupId> <!-- 组织ID -->
<artifactId>logback-parent</artifactId> <!-- 模块名 -->
<version>1.2.3</version> <!-- 版本号 -->
</dependency>
依赖传递
Maven 中 A 依赖 B 时,会自动引入 B 所需要的依赖
排除依赖 : 排除依赖指主动断开依赖的资源,被排除的资源 无需指定版本
<dependency>
<groupId>com.itheimas</groupId>
<artifactId>untitled1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 排除依赖 排除掉untitled1中的 jjwt -->
<exclusions>
<exclusion>
<groupId>com.10duke.client.jwt</groupId>
<artifactId>jjwt</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
scope 值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
compile | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
继承与聚合
继承
- 在子工程中,配置了继承关系之后,坐标中的 groupId 是可以省略的,因为会自动继承父工程。
- relativePath 指定父工程的 pom 文件的相对位置,不指定会从 本地 / 远程仓库查找该工程
- 若父子都配置了同一个依赖的不同版本,以 子工程 的为准。
版本锁定
版本统一
当多个模块使用同一个依赖,需要统一的版本号,版本锁定使得便于版本升级。
使用方法:
在父工程的 pom文件中通过 统一管理
版本号集中管理
使用 统一管理版本号子工程中的版本号
<properties>
<jjwt.version>0.9.1</jjwt.version>
</properties>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
聚合
- 聚合: 将多个模块组成一个模块,同时进行项目构建
- 聚合工程: 一个不具有业务功能的 " 空 " 工程
- 作用: 快速构建项目 ( 无需根据依赖手动构建 )
当设置为 pom 时,这意味着该项目是一个聚合项目(aggregator project)或者是一个父项目(parent project),它本身不会被打包成一个 JAR、WAR 或其他类型的归档文件。
...
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>