我正在将 Spring Boot 与多模块 Maven 项目一起使用,结构如下
项目 - 项目休息控制器 - 项目文件适配器 - 项目库
当project-rest-controller模块包含@RestController并且有一个主Spring Boot类来启动嵌入式tomcat时,控制器将接收一个POST并创建一个请求并将其传递给project-library模块。
此外,项目文件适配器模块包含一个 Spring-Integration 文件适配器,用于提取目录中的文件、读取该文件并创建请求并将其传递给项目库模块。
当我使用 mvn spring-boot:run 从父目录中运行应用程序时,出现异常,应指定主类。
Spring boot 似乎允许通过以下方式指定主类
mvn spring-boot:run -Dstart-class=com.blah.App
但是我有两个主要课程。
我应该启动两个应用程序吗?
来自项目休息控制器的一个 来自项目文件适配器的一个
这将启动两个 JVM,这就是我现在正在尝试做的事情?
在 Spring Boot 3.2 中我们可以使用以下解决方案。
pom.xml
<properties>
<start-class>org.springframework.boot.loader.launch.PropertiesLauncher</start-class>
</properties>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</plugin>
使用动态主类名称运行 jar
java -jar -Dloader.main=com.myapp.Main1 -jar myapp.jar
java -jar -Dloader.main=com.myapp.Main2 -jar myapp.jar