如何在 maven pom.xml 文件中拥有另一个父依赖项以及 Spring Boot 父项?

5 maven-3 maven spring-boot spring-boot-starter

我目前正在开发一个 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>
Run Code Online (Sandbox Code Playgroud)

我想要的是我的项目是一个更广泛项目的子模块 Spring Boot 项目(即我想将它们打包在一个 Repo 中的一个项目文件夹下)。

现在,通常为了设置多模块项目,您将像上面这样的父 pom 信息放入您的子模块中pom.xml

但是由于需要将 Spring Boot 父项作为一项要求,因此无法这样做。

我已经在网上看到建议将我的子模块移出并将其作为一个单独的项目独立存在,但我认为这将是我现在的最后手段,除非这是唯一的方法。

有没有人对如何实现我想要的或我想要实现的是否实际上可行有任何想法?

期待听到选项...

Dar*_*the 5

你不能有不同的父 POM。除非您想将 Boot parent 扩展到您自己的父 POM 并从那里工作,否则这可能是可行的。

另一种选择是将 Spring Boot BOM 与 DependencyManagement 一起使用,当您想要覆盖依赖项时,它会稍微不那么简洁,例如通常您只覆盖一个 maven 属性。

但是,当使用 BOM 时,您需要对覆盖进行排序,然后引导 BOM 最后出现在依赖项管理标记中。来自 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>
Run Code Online (Sandbox Code Playgroud)

见,https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-without-a-parent

有关在不使用 Spring Boot Parent POM 的情况下设置 Spring Boot 项目的更多信息。