Наследование позволяет избавиться от дублирования описаний.
Давайте рассмотрим как использовать наследование при описании maven проектов. Предположим, что у нас несколько проектов и в каждом мы используем библиотеку log4j для логгирования приложения.
Сначала создадим проект-предок. Весь проект-предок будет состоять из одного файла 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>
<groupId>ru.apache-maven</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
</project>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency
cd parent
mvn install.
$ mvn dependency:tree
\- log4j:log4j:jar:1.2.16:compile
Теперь можно создать один или несколько проектов-потомков:
<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>ru.apache_maven</groupId>-->
<artifactId>testproj1</artifactId>
<!--<version>1.0-SNAPSHOT</version>-->
<parent>
<groupId>ru.apache_maven</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<dependencies>
</dependencies>
</project>
$ mvn dependency:tree
\- log4j:log4j:jar:1.2.16:compile
Кроме зависимостей в проекте-предке часто объявляют плагины: