04、maven聚合与继承

1、创建一个简单maven项目,如下图所示:

04、maven聚合与继承_第1张图片

2、注意Packaging的类型为pom,如下图所示,点击完成

04、maven聚合与继承_第2张图片

3、最后生成的项目结构,只有一个pom.xml,如下图所示:


4、pom.xml的内容如下:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.onyas.user</groupId>
  <artifactId>user-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
</project>

5、到此项目搭建完成,下面要做的就是修改pom.xm,把其它相关的模块聚合在一起,另外把其它模块中共同的部分提取出来,放在父pom.xml中,其它模块继承就可以了。

5.1、聚合:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.onyas.user</groupId>
  <artifactId>user-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
  <!-- 导入三个模块,把这三个模块聚合在一起 -->
  <modules>
  	<module>../user-core</module>
  	<module>../user-log</module>
  	<module>../user-services</module>
  </modules>
  
</project>


5.2继承:

父pom.xml如下所示:

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.onyas.user</groupId>
	<artifactId>user-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<!-- 导入三个模块,把这三个模块聚合在一起 -->
	<modules>
		<module>../user-core</module>
		<module>../user-log</module>
		<module>../user-services</module>
	</modules>

	<!-- 以下为提取的公共部分,其它模块的pom.xml继承就可以 -->
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>


</project>

子模块的pom.xml如下所示:


<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>

	<parent>
		<groupId>com.onyas.user</groupId>
		<artifactId>user-parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<relativePath>../user-parent/pom.xml</relativePath>
	</parent>

	<artifactId>user-core</artifactId>
	<packaging>jar</packaging>

	<name>user-core</name>
</project>

6、完成配置,以后只要在user-parent的pom.xml中操作就可以了,比如run as -->maven build ..  clean,clean package,clean install,等操作



区别 
1. 对于聚合模块来说,它知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。
2. 对于继承关系的父  POM 来说,它不知道有哪些子模块继承与它,但那些子模块都必须知道自己的父  POM 是什么。

共同点 
1. 聚合  POM 与继承关系中的父 POM   packaging 都是 pom
2. 聚合模块与继承关系中的父模块除了  POM 之外都没有实际的内容
注:在现有的实际项目中一个 POM既是聚合POM,又是父 POM,这么做主要是为了方便

你可能感兴趣的:(04、maven聚合与继承)