Maven详解之继承

一、为什么要使用继承

由于非compile范围内的依赖信息是不能再“依赖链”中传递的,很容易造成版本不一致,所以有需要的工程只能单独配置。

Action <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.0</version>
     <scope>test</scope>
</dependency>
Cat <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.0</version>
     <scope>test</scope>
</dependency>
Animal <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.9</version>
     <scope>test</scope>
</dependency>

二、解决思路

此时如果将项目中各个模块的junit版本统一成4.9版本,那么各个工程都要手工修改,这样可取吗?使用继承机制就可以将这样的依赖信息统一提取到父工程模块进行统一管理。

将junit依赖统一提取到”父”工程中,在子工程中声明junit依赖时不指定版本,以父工程中统一设定为准。如果我们要修改版本,只需要修改父工程,其他子模块全都会被修改。

三、操作步骤

①创建一个Maven工程作为父工程,注意:打包方式为pom

新建工程New -> Maven Project

Maven详解之继承的照片 - 1

点击 Next

Maven详解之继承的照片 - 3

注意选择打包方式为 pom,点击Finish

Maven详解之继承的照片 - 5

新建的父工程如下:

Maven详解之继承的照片 - 7

pom文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.queen.maven</groupId>
	<artifactId>Parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
</project>

②在子工程中声明对父工程的引用

<!-- 在子工程中声明父工程 -->
<parent>
	<groupId>com.queen.maven</groupId>
	<artifactId>Parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!-- 以当前文件为基准的父工程pom文件的相对路径 -->
	<relativePath>../Parent/pom.xml</relativePath>
</parent>

 我们以Action工程为例,如图:

Maven详解之继承的照片 - 9

③将子工程的坐标中与父工程的坐标中重复的内容删掉

当我们引入父工程后,Action工程中出现了冲突部分,如下:

Maven详解之继承的照片 - 11

将冲突部分,删掉就行了。

④在父工程中统一junit的依赖

<!-- 配置依赖的管理 -->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.0</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

 如图:

Maven详解之继承的照片 - 13

⑤在子工程中删除junit依赖的版本号部分

Maven详解之继承的照片 - 15

当我们在父工程做了统一管理后,子工程版本处就出现了冲突,将冲突去掉就行了。

 

博客地址:http://www.marsitman.com/maven/maven_override.html

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。

 

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!



点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注