Для чего нужно наследование ? Благодаря наследованию, можно одни и те же dependency хранить ТОЛЬКО в одном месте.
Например, у нас есть несколько проектов. И каждый из них использует один и тот же фреймворк — junit.
Проще описать это в одном pom-xml, а остальные проекты унаследовать от данного проекта.
Т.е. у нас будет один parent-проект и несколько модулей данного проекта.

Важно, parent-проект должен иметь

<packaging>pom</packaging>

Иначе будет ошибка:
The parent project must have a packaging type of POM

Вот пример parent-проект:

<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>org.example</groupId>
	<artifactId>ParentProject</artifactId>
	<version>1</version>
	<packaging>pom</packaging>
	<properties>		
		<junit.version>4.12</junit.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>

	</dependencies>
	<modules>
		<module>ChildModule_1</module>
	</modules>
</project>

А вот пример модуля:

<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>org.example</groupId>
    <artifactId>ParentProject</artifactId>
    <version>1</version>
  </parent>
  <artifactId>ChildModule_1</artifactId>
  <packaging>jar</packaging>
</project>

Как видим,модуль содержит ссылку на parent-проект, т.е. тег parent.
Все, теперь в ChildModule_1 вы можете без проблем использовать фреймворк junit, который объявлен в parent-проект

Реклама