Как получить другую родительскую зависимость, а также родителя Spring Boot в файле maven pom.xml?

В настоящее время я занимаюсь разработкой мультимодульного проекта Spring Boot.

Когда вы настраиваете проект Spring Boot, в вашем pom.xml Вы должны иметь родительскую ссылку на Spring Boot, например

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>

Я хотел бы, чтобы мой проект был подмодулем проекта Spring Boot более широкого проекта (т.е. я хотел бы объединить их в одну папку проекта в репо).

Теперь, обычно для настройки многомодульного проекта, вы помещаете информацию о родительском pom, как указано выше, в свой подмодуль pom.xml,

Но с требованием иметь родителя Spring Boot в качестве требования сделать это невозможно.

Я уже видел в сети предложения, рекомендующие переместить мой субмодуль и сделать его отдельным проектом независимо, но я думаю, что это будет моим последним средством прямо сейчас, если только это не единственный путь.

Есть ли у кого-нибудь идеи о том, как добиться того, чего я хочу, или то, чего я хочу достичь, практически осуществимо или нет?

С нетерпением жду возможности услышать...

2 ответа

Решение

Вы не можете иметь разные родительские POM. Если вы не хотите расширить родительский элемент Boot в свой собственный POM-родитель и работать оттуда, что может быть осуществимо.

Другой вариант заключается в использовании Spring Boot BOM с DependencyManagement, он немного более лаконичен, когда вы хотите переопределить зависимости, например, обычно вы просто переопределяете свойство maven.

Однако при использовании спецификации вам необходимо упорядочить переопределения, а затем загрузочная спецификация будет последней в теге управления зависимостями. Пример из Spring Docs,

<dependencyManagement>
<dependencies>
    <!-- Override Spring Data release train provided by Spring Boot -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-releasetrain</artifactId>
        <version>Fowler-SR2</version>
        <scope>import</scope>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.5.10.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>
</dependencyManagement>

См. https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html.

Для получения дополнительной информации о настройке проекта Spring Boot без использования POM Spring Boot Parent.

Вы можете создать родительский pom.xml и добавить в этот pom.xml родительский загрузочный родительский элемент, а также вы должны добавить в качестве модуля другие проекты с

Если вы добавите родительский pom.xml в модуль pom.xml, вы можете получить доступ к весенней загрузке через родительский pom.xml.

родительский проект pom.xml

...

<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<name>parent-project</name>
<description>Rent A Car Operation System Parent Project</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.M3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
    <module>module-1</module>
    <module>module-2</module>
    <module>module-3</module>
</modules>
...

модульный проект pom.xml

...
<name>module-1</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>com.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
...

Вам не нужно добавлять зависимости, которые уже добавлены в родительский проект pom.xml.

Не забывай <packaging>pom</packaging> в родительском проекте pom.xml

Другие вопросы по тегам