6

我目前正在开发一个 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 父级作为要求,因此不可能这样做。

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

有没有人对如何实现我想要的或者我想要实现的目标是否切实可行有任何想法?

期待听到选项...

4

2 回答 2

5

你不能有不同的父 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 项目的更多信息。

于 2018-02-13T22:49:50.600 回答
0

您可以创建一个父 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

于 2018-02-14T07:26:01.207 回答