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

How to have another parent dependency as well as Spring Boot parent in maven pom.xml file?

我目前正在开发 Spring Boot 多模块项目。

当您设置 Spring 引导项目时,在您的 pom.xml 中您需要有一个对 Spring 引导的父引用,例如

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

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

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

但是由于要求 Spring 引导父级作为要求,因此不可能这样做。

我已经在网上看到建议将我的子模块移出并将其作为一个独立的项目,但我认为这将是我现在的最后选择,除非那是唯一的出路。

有没有人知道如何实现我想要的,或者我想要实现的是否切实可行?

期待听到选项...

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

另一种选择是将 Spring 引导 BOM 与 DependencyManagement 一起使用,当您想要覆盖依赖项时,它会更简洁一些,例如通常你只是覆盖一个maven 属性.

但是,当使用 BOM 时,您需要订购覆盖,然后引导 BOM 最后放在依赖管理标签中。来自 Spring 文档的示例,

<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#using-boot-maven-without-a-parent

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

您可以创建一个父项 pom.xml 并在此 pom.xml 中添加 spring-boot 父项,并且您还必须使用

添加其他项目作为模块

如果您在模块 pom.xml 中添加父级 pom.xml,您可以通过父级 pom.xml

访问 spring-boot

父项目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