我的项目包括查看服务和界面服务。项目目录如下所示:
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。
答案 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);
}