Maven的继承。

Maven的聚合。

1.Maven的继承

1)为什么要有继承?

  假如存在一下现状:

  • MakeFriends工程依赖Hello2工程,Hello2工程依赖Hello工程。
  • ①Hello依赖的junit:4.0
  • ②Hello2依赖的junit:4.2
  • ③MakeFriends依赖的junit:4.9
  • junit依赖是test范围的,由于test范围的依赖不能传递,所以必然会分散在各个模块工程中,很容易造成版本不一致。
  • 这就产生了一种需求:如何统一管理各个模块工程中对junit依赖的版本。

2)继承

  解决上述问题的思路:将junit依赖统一提取到“父工程”中,在“子工程”中声明junit依赖时不指定版本号,而是以父工程中统一设定的为准,同时还便于修改版本号。

  这就产生了“继承”的概念。

  具体操作步骤如下:

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

maven_08_01

1
2
3
4
<groupId>com.cwz.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
  • ②在子工程中声明对父工程的引用。
1
2
3
4
5
6
7
8
<!--子工程中声明对父工程的引用-->
<parent>
<groupId>com.cwz.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--以当前工程的pom.xml文件为基准的父工程的pom.xml文件的相对路径-->
<relativePath>../Parent/pom.xml</relativePath>
</parent>
  • ③将子工程的坐标中与父工程坐标中重复的内容删除。如图,删除图中标警告的地方:

maven_08_02

  • ④在父工程中统一管理junit的依赖。
1
2
3
4
5
6
7
8
9
10
11
<!-- 统一配置依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
  • ⑤在子工程中删除junit依赖的版本号部分。如图,删除图中标警告的地方:

maven_08_03

  • 注意:配置了继承后,执行mvn install安装命令时,要先安装父工程

2.聚合

  • ①作用:一键安装本地开发的相互依赖的各个工程模块。
  • ②配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块信息。
  • 注意:可以将父工程作为聚合工程,但聚合工程可以不是父工程。
1
2
3
4
5
6
7
<!--一般在父工程中配置聚合-->
<modules>
<!--指定各个子工程的相对路径-->
<module>../Hello</module>
<module>../Hello2</module>
<module>../MakeFriends</module>
</modules>
  • ③使用方式:在聚合工程的pom.xml上点击右键→Run as→Maven install,即可。

评论