如何同时启动两个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);
}
我的项目包括一个视图服务和一个界面服务。项目目录如下所示:
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);
}