目录
实现继承
依赖管理
实现继承
在maven中,也存在继承关系,允许一个项目继承另一个项目的配置信息
那么,如何实现项目的继承呢?
在idea中,右键父项目文件夹,点击新建模组,就可以新建一个该父项目下的子项目。
新建完成后,可以看到在父项目pom文件中,自动添加了以下代码:
<packaging>pom</packaging>
<modules><module>child1</module>
</modules>
代码标识了该父项目下的子项目artifactId
在子项目的pom.xml文件中,通过<parent>标签指定父项目:
<project><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version></parent><artifactId>child-project</artifactId><!-- 可以覆盖父 POM 的配置,或者添加新的配置 --><dependencies><!-- 子项目特有的依赖 --></dependencies>
</project>
parent标签中填写的父项目的坐标
子项目只有artifactId属性,因为子项目默认的groupId和父项目相同
另外,子项目还默认继承了所有父项目的依赖(包括被设置为optional的依赖)
依赖管理
既然子项目默认继承了所有父项目的依赖,那如果子项目不想继承某一些依赖,应该怎么办呢?
在父项目中,可以使用依赖管理的标签<dependencyManagement>来管理子项目中所有可能用到的依赖
<dependencyManagement><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version><scope>provided</scope></dependency></dependencies>
</dependencyManagement>
当依赖被<dependencyManagement>标签修饰后,表示这个依赖被集中管理了,不同的子项目导入同一个依赖都会使用父项目中的这个版本
并且,这些依赖在子项目中将不会自动导入
如果子项目中想要使用某一个依赖,则在自己的dependencies中导入即可
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>
不过,这个时候子项目无需再标明依赖的版本号,因为所有的子项目都将使用父项目中统一规定的版本号
注意:尽管使用了<dependencyManagement>,如果父项目中仍然存在没有被<dependencyManagement>修饰的依赖,这些依赖还是会直接继承
子项目项目引用
除了可以引用父项目,子项目之间也可以进行相互引用
假设我们有子项目child1和child2,在子项目child2中添加依赖:
<dependency><groupId>org.example</groupId><artifactId>child1</artifactId>
</dependency>
这样child2就可以直接使用定义在child1中的内容了