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

标签 spring-boot gradle microservices multi-module fatjar

我是Spring Boot / Gradle的新手,所以如果我说错了,请随时纠正我。
我有两个Spring Boot项目,我正在使用Spring Boot Gradle插件在不同的端口中一个接一个地运行,并生成相应的jar。
我想知道是否有可能生成一个可以在不同端口运行两个项目的胖子 jar 。
这是我的项目的结构:
项目

  • setting.gradle
  • Project-1
  • src /.../@ SpringBootApplication主要
  • build.gradle

  • Project-2
  • src /.../@ SpringBootApplication Main2
  • build.gradle


  • 我将两个项目都包含在setting.gradle中,将Project-2包含在Project-1的依赖项中,并尝试了gradle clean build,但是在Project-1中生成的胖 jar 不包含Project-2的 jar 。我的期望是,当我运行胖子jar时,它将在各自的端口中暴露两个项目,就像在每个项目上执行gradle bootRun一样。
    我在做什么对吗?我假设将Project-2放在Project-1的依赖项中,gradle可以创建我想要的胖子。
    还是那不可能,我只需要使用发给我的两个 jar ?
    感谢您的时间。

    最佳答案

    您可以在同一个tomcat实例后面部署两个单独的jar,以获得相同的结果。假设如果在tomcat后面部署my-first-jar.jarmy-second-jar.jar,您将获得两组端点,例如:
    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的胖子 jar ,它也将具有来自Project 2的文件,但是您将只能运行单个spring boot应用程序。
    PS:如果您愿意,您可以在一个容器应用程序中运行多个应用程序。看看here,但不建议您沿着那条路走,因为它杂乱无章

    关于spring-boot - 是否可以使用@SpringBootApplication main制作一个带有两个spring boot应用程序的胖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64502011/

    相关文章:

    java - 如何在restful Controller 的返回对象中设置成员变量

    postgresql - Gradle项目中如何连接PostgreSQL

    scala - 可分发的zip Web服务器

    java - 使用 Spring boot 在 ConstraintValidator 中 Hibernate 验证对象

    spring - 有效解决 501 HTTPS Required Error in Maven Build for Moving (http ://repo1. maven.org/maven2 & http ://repo. spring.io) to HTTPS?

    c# - 如何通过 MassTransit 和 RabbitMQ 发送各种命令类型?

    amazon-web-services - AWS 负载均衡器 502

    microservices - 平均响应时间与平均周转时间 (DIN_IEC_25023) 差异?

    java - Gradle 多模块依赖

    android - 多卡 1.4.20 "Nothing to document"