如何同时启动两个springboot项目

时间:2019-01-09 03:29:03

标签: java spring maven spring-boot-maven-plugin

我的项目包括查看服务和界面服务。项目目录如下所示:

Myproject/
    springboot1/
    springboot2/

springboot1和springboot2可以分别运行。我现在启动它们的方法是打开两个终端并执行以下命令:

springboot1

cd Myproject/springboot1/
mvn spring-boot:run

springboot2

cd Myproject/springboot2/
mvn spring-boot:run

有什么办法可以同时启动两个项目? 例如,将全局pom.xml文件添加到Myproject目录中,然后直接在Myproject目录中执行mvn spring-boot:run。

3 个答案:

答案 0 :(得分:2)

,正如您提到的那样,需要全局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

答案 1 :(得分:0)

尝试一下

MVN springboot1 / spring-boot:run | mvn springboot2 / spring-boot:run

答案 2 :(得分:0)

您可以创建包装程序Spring Boot应用程序,将其作为单独的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);
}