如何同时启动两个spring boot项目

How to start two springboot projects at the same time

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

Myproject/
    springboot1/
    springboot2/

springboot1 和 springboot2 都可以 运行 separately.The 我现在启动它们的方式是打开两个终端并执行以下命令:

springboot1

cd Myproject/springboot1/
mvn spring-boot:run

springboot2

cd Myproject/springboot2/
mvn spring-boot:run

有什么办法可以同时启动两个项目吗? 比如在Myproject目录下添加一个全局的pom.xml文件,直接在Myproject目录下执行mvn spring-boot:运行

试试这个

mvn springboot1/spring-boot:运行 | mvn springboot2/spring-boot:运行

,正如你提到的需要类似全局 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);
       }
    

    }

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

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

您可以创建一个包装器 Spring 启动应用程序,将它们作为单独的 servlet 启动。它们应该位于兄弟应用程序上下文中,并将包装器应用程序共享为父上下文。它看起来大致像这样:

public static void main(String[] args) {
    new SpringApplicationBuilder().parent(WrapperApplication.class).web(WebApplicationType.NONE)
        .child(Application1.class).web(WebApplicationType.SERVLET)
        .sibling(Application2.class).web(WebApplicationType.SERVLET)
        .run(args);
}