Наследование позволяет избавиться от дублирования описаний.
Давайте рассмотрим как использовать наследование при описании 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
Кроме зависимостей в проекте-предке часто объявляют плагины: