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

时间:2018-02-13 21:21:02

标签: maven spring-boot maven-3 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>

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

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

但是要求将Spring Boot父项作为一项要求,不可能这样做。

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

有没有人对如何实现我想要的东西有任何想法,或者我想要达到的目标是否实际可行?

期待听到选择......

2 个答案:

答案 0 :(得分:4)

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

另一种选择是使用带有DependencyManagement的Spring Boot BOM,当你想要覆盖依赖关系时,它会更简洁一点。通常你只是覆盖一个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>

请参阅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项目的更多信息。

答案 1 :(得分:0)

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

添加其他项目作为模块

如果在模块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中添加的依赖项

不要忘记父项目pom.xml中的<packaging>pom</packaging>