java如何从另一个Maven模块启动Spring Boot应用程序?
我得到了一个由两个模块组成的项目
- 第一个是SpringBootRESTWeb服务
- 第二个是应该用于此服务的代码李>
问题:我需要从代码中的另一个模块启动Web服务
当然,这里最好的选择是将服务部署到某个远程主机上,但是如果我想在本地机器上启动服务,有哪些选择呢
第一个想法是打包服务模块,然后使用maven-dependency-plugin
将jar
复制到第二个模块,并以以下方式启动它:
Runtime.getRuntime().exec("java -jar my-rest-service.jar");
我可以从另一个模块启动Spring Boot应用程序吗?调用Application.main()
方法还是什么
# 1 楼答案
您可以将
build
和install
第一个模块作为jar
库放入本地maven存储库(.m2
默认文件夹)。然后,您可以在第二个模块中将该库用作maven依赖项之后,您可以像通常一样
spring-boot
启动应用程序(第二个模块)——使用main
方法示例:
第一个模块-库:
第二个模块-应用程序:
# 2 楼答案
Spring Boot Maven插件将我们的应用程序打包为可执行JAR——这样的文件不能在其他项目中使用,因为类文件被放入
BOOT-INF/classes
为了与另一个项目共享类,最好的方法是创建一个包含共享类的单独jar,然后使其成为依赖于它们的所有模块的依赖项
因此,在spring引导模块中,您需要添加如下分类器:
当然,你需要在你想要使用的pom中添加你的spring引导模块依赖项,然后你应该能够使用
Application.java
请检查这里:Using a Spring Boot Application as a Dependency