是否可以使用@SpringBootApplication main制作一个带有两个spring boot应用程序的胖子

问题描述

我是Spring Boot / Gradle的新手,所以如果我说错了,请随时纠正我。

我有两个Spring Boot项目,我正在使用Spring Boot Gradle插件在不同的端口中一个一个地运行,并生成相应的jar。

我想知道是否有可能生成一个可以在不同端口运行两个项目的胖子。

这是我的项目的结构:

项目

  • setting.gradle

  • Project-1

    • src /.../@ SpringBootApplication主页
    • build.gradle
  • Project-2

    • src /.../@ SpringBootApplication Main2
    • build.gradle

我在set.gradle中包含了两个项目,在Project-1的依赖项中包含了Project-2,并尝试了gradle clean build,但是在Project-1中生成的胖子不包含Project-2的罐。我的期望是,当我运行胖子缸时,它将在各自的端口中暴露两个项目,就像我对每个项目进行了gradle bootRun

我在做什么正确?我假设将Project-2放在Project-1的依赖项中,可以使gradle创建我想要的胖子。

或者那是不可能的,我只需要使用给我的两个罐子?

谢谢您的时间。

解决方法

您可以在同一个tomcat实例后面部署两个单独的jar,以获得相同的结果。假设如果将my-first-jar.jarmy-second-jar.jar部署在tomcat的后面,则会得到两组端点,例如:

http:// localhost:8080 / my-first-jar / apis-from-first-jar

http:// localhost:8080 / my-second-jar / apis-from-second-jar

但是,似乎您无法正确创建胖子。默认情况下,项目的依赖项不包含在jar中。您需要明确地对构建工具(在您的情况下为gradle)说一个胖子。看看here

一旦创建了Project 1的胖子罐,它也将具有来自Project 2的文件,但是您将只能运行单个spring boot应用程序。

PS:如果您愿意,您可以在一个容器应用程序中运行多个应用程序。看看here,但不建议您走那条路,因为它很杂乱