首页 > 解决方案 > 如何同时启动两个springboot项目

问题描述

我的项目包括一个视图服务和一个界面服务。项目目录如下所示:

Myproject/
    springboot1/
    springboot2/

springboot1和springboot2都可以单独运行。我现在启动的方式是打开两个终端,执行如下命令:

弹簧靴1

cd Myproject/springboot1/
mvn spring-boot:run

弹簧靴2

cd Myproject/springboot2/
mvn spring-boot:run

有没有办法同时启动两个项目? 比如在Myproject目录下添加一个全局pom.xml文件,在Myproject目录下直接执行mvn spring-boot:run。

标签: javaspringmavenspring-boot-maven-plugin

解决方案


的,正如您提到的,需要类似全局 pom xml 的方式,而不是通过将两个项目作为模块组合到您的打包应用程序(Myproject)来实现。让我给你一些想法:

  • 使用全局 pom 文件创建一个新的 springBoot 应用程序,并将所有常见的(1 和 2 项目)jar 或依赖项移动到这个全局 pom 文件中。此外,作为主应用程序的每个应用程序都将其删除,因为它不再需要作为单独的实体,但还要确保您在各自的主文件中是否有任何自定义代码,而不是将该代码移动到打包项目的主文件中。

  • 将项目 1 和 2 构建为 jar 包,并将它们作为依赖项添加到打包项目中。

  • 项目 springboot1 内部 pom 将如下所示:

    ...
    <groupId>org.springboot1.module</groupId>
    <artifactId>springboot1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    ...
    
  • 项目 springboot2 内部 pom 将如下所示:

    ...
    <groupId>org.springboot2.module</groupId>
    <artifactId>springboot2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    ... 
    
  • 打包项目 pom 将如下所示:

    ...
    <dependency>
        <groupId>org.springboot1.module</groupId>
        <artifactId>springboot1</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springboot2.module</groupId>
        <artifactId>springboot2</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    ...
    
  • 在您的打包主文件中添加来自依赖项的 @Components 的新位置

    @SpringBootApplication
    @ComponentScan(basePackages = 
       {"org.springboot1.module.one.*","org.springboot2.module.two.*"})
    public class Myproject {
       public static void main( String[] args )
       {
          SpringApplication.run(Myproject.class, args);
       }
    

    }

  • 运行打包应用程序的主类,它将从两个依赖项目开始。

希望以上步骤将根据您的项目结构进行更多更改。此外,为了更清楚,您还可以参考Maven Project_Aggregation


推荐阅读