@zeratustra

Как выполнить настройку pom.xml с несколькими «родителями»?

Здравствуйте!
Подскажите красивое решение для такой задачки
Есть общий
pom.xml для многомодульного проекта следующего вида:
<project>
		<modelVersion>4.0.0</modelVersion>
		<groupId>ru.zeratustra</groupId>
		<artifactId>parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<packaging>pom</packaging>
		<modules>
			<module>srv</module>
			<module>sdk</module>
		</modules>
	</project>


Для всех модулей с апи/сдк
sdk pom.xml выглядит примерно так:
<project>
		<modelVersion>4.0.0</modelVersion>
		<groupId>ru.zeratustra</groupId>
		<artifactId>sdk</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<packaging>jar</packaging>
		<name>ru.zeratustra.sdk</name>
		<description>Service SDK module</description>
		<properties>....</properties>
		<dependencies>....</dependencies>
		<build>
			<plugins>....</plugins>
		</build>
	</project>


Для всех модулей сервисов
srv pom.xml выглядит примерно так
<project>
		<modelVersion>4.0.0</modelVersion>
		<groupId>ru.zeratustra</groupId>
		<artifactId>srv</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<packaging>jar</packaging>
		<name>ru.zeratustra.srv</name>
		<description>Service  module</description>
		<parent>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-parent</artifactId>
			<version>2.0.4.RELEASE</version>
			<relativePath/>
		</parent>
		<properties>....</properties>
		<dependencies>....</dependencies>
		<build>
			<plugins>....</plugins>
		</build>
	</project>



Причем, как минимум, 70% содержания блоков properties, dependencies, plugins для всех модулей общая. Естественно, именно ее я хочу вынести в общий pom.xml, однако, не могу это сделать с помощью инструкции parent, так как для сервисов уже есть зависимость от spring-boot-starter-parent.
Можно реализовать двумя родителями, одни для всех srv(наследующий в свою очередь spring-boot-starter-parent) и один для sdk, но очень хочется вести один общий pom, а не два. Так же не хочу делать общего родителя наследующего spring-boot-starter-parent, так как это избыточно для модулей sdk.
Как быть? Есть ли возможность наследоваться от нескольких родителей? Как это можно реализовать?

Спасибо!

upd: иерархия которую я пытаюсь сваять - в репозитории
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DS1977
Можно попробобать с bom

Не самое простое решение, но другое мне не приходит в голову:
bom-pom
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>ru.zeratustra</groupId>
    <artifactId>bom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>ru.zeratustra</groupId>
                <artifactId>parent1</artifactId>
                <scope>import</scope>
                <version>${parent1.version}</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>ru.zeratustra</groupId>
                <artifactId>parent2</artifactId>
                <scope>import</scope>
                <version>${parent2.version}</version>
                <type>pom</type>
            </dependency>
       </dependencies>
 </dependencyManagement>
  </project>

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы