一.Maven的坐标(gav)
示例:
<!-- 一般为公司或组织域名倒序+项目名 -->
<groupId>com.shiyanlou.spring</groupId>
<!-- 一般为模块名 -->
<artifactId>bean_test</artifactId>
<!-- 一般为版本,SNAPSHOT:快照 -->
<version>1.0-SNAPSHOT</version>
二.maven仓库与坐标的关系
示例:
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<!-- RELEASE:正式版 -->
<version>5.1.5.RELEASE</version>
<!-- 所以该spring-core.jar对应的本地目录应为: -->
org/springframework/spring-core/5.1.5.RELEASE/spring-core-5.1.5.RELEASE.jar
多模块项目就是通过在依赖中添加另一个模块坐标依赖组合而成的
如下图所示:
三.maven常用依赖的范围解释
- compile
- 对主程序是否有效: 有效
- 对测试程序是否有效: 有效
- 是否参与打包: 参与
- 非compile范围的依赖不具有传递性
- 依赖排除的设置方式
<exclusions>
<exclusion>
<groupId>....</groupId>
<artifactId>....</artifactId>
<!-- 不需要填写版本 -->
</exclusion>
</exclusions>
- test
- 对主程序是否有效: 无效
- 对测试程序是否有效: 有效
- 是否参与打包: 不参与
- proviede
- 对主程序是否有效: 有效
- 对测试程序是否有效: 有效
- 是否参与打包: 不参与
maven依赖的原则:
a. 路径不同时,路径最短者优先
b. 路径相同时,dependency标签先声明者优先
四.Maven继承
- 创建maven父工程(不需要实现业务),注意在父工程的pom中:
<!-- 父工程的打包方式为 pom -->
<packaging>pom</packaging>
<!-- 在父工程中统一管理相同的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>***</groupId>
<artifactId>***</artifactId>
<version>***</version>
<scope>***</scope>
</dependency>
<dependency>
.....
</dependency>
</dependencies>
</dependencyManagement>
- 在子工程的pom中申明对父工程的引用
<parent>
<groupId>父工程的groupId</groupId>
<artifactId>父工程的artifactId</artifactId>
<version>父工程的version</version>
<!-- 如果子工程与父工程在同级目录下需要添加: -->
<!-- 以当前子工程的pom文件为基准查找父工程pom文件的相对路径 -->
<relativePath>../父工程pom文件路径/pom.xml</relativePath>
</parent>
1.因为子工程继承自父工程,所以可以将子工程的坐标中与父工程坐标中重复的内容删除
2.在子工程中是删除由父工程管理的那部分依赖的版本号. 如果子工程需要单独配置其他版本的依赖,可以保留.
五.Maven聚合
注意:聚合与继承不是一个概念,不过一般将聚合配置在父工程中
<!-- 配置聚合 -->
<modules>
<!-- 基于当前pom文件指定各个子工程的相对路径 (此处子工程名为:Hello与HelloSecond)-->
<module>../Hello</module>
<module>../HelloSecond</module>
</modules>