如何正确设置 Maven Spring Boot 多模块项目?

Posted

技术标签:

【中文标题】如何正确设置 Maven Spring Boot 多模块项目?【英文标题】:How to properly setup maven Spring Boot multi module project? 【发布时间】:2020-11-01 02:46:31 【问题描述】:

在一些研究尝试失败后,我仍然无法清楚地解决以下问题:

Project-All - "Ability to combine Module #1 & Module #2 and to run in dev (Test full solution)"
|
+ Module_1 - "Ability to run independently in dev (Different dev team)"
| - pom.xml
+ Module_2 - "Ability to run independentlyin dev (Different dev team)"
| - pom.xml
- pom.xml

我想分别构建和运行模块_1 和模块_2,以及组装。在尝试 Assembly Plugin for Maven 没有取得显着成功(或过于复杂的解决方案)之后,我现在尝试使用 Spring Boot Plugin for Maven,这似乎更易于使用。 p>

那么对于如何使用 Spring Boot Plugin for Maven 正确构建此类设置,我们有什么建议吗?

谢谢

【问题讨论】:

一个模块是否依赖于另一个模块,或者它们完全不相关?在哪个模块中有@SpringBootApplication 的主类? 它们不相关。主类在 Module_1 中,但在组装后形成一个应用程序(例如 - 产品目录和管理面板) 【参考方案1】:

这是您可以尝试的一种方法:

在主模块 POM 中,您可以使用 maven 发布插件,如下所示:

...
<packaging>pom</packaging>
   <modules>
      <module>module1..</module>
      <module>module2..</module>
</modules>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <goals>install</goals>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>

如果您希望构建子模块以使其可以独立运行:

您可以在模块 pom 中使用 maven repckage 目标,如下所示:

 <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

有可能在此配置中提供主类的名称。 查看官方documentation

【讨论】:

谢谢@SwapnilKhante 去试试,会告诉你的。

以上是关于如何正确设置 Maven Spring Boot 多模块项目?的主要内容,如果未能解决你的问题,请参考以下文章

spring boot helloworld

通过 Maven 为 Spring Boot 应用程序创建 AWS Beanstalk 的 .ebextensions 的正确方法是啥

如何使用 Spring Boot 将 Log4j 添加到 maven 项目

使用 maven 插件设置时 Spring Boot 配置文件不活动

spring boot maven pom.xml设置

Spring Boot Maven 插件 - “附加”设置有啥作用?