0

我对 Spring Boot/gradle 完全陌生,所以如果我说错了,请随时纠正我。

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

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

这是我的项目的结构:

项目

  • 设置.gradle

  • 项目一

    • src/.../@SpringBootApplication Main
    • 构建.gradle
  • 项目-2

    • src/.../@SpringBootApplication Main2
    • 构建.gradle

我将两个项目都包含在setting.gradle中,将Project-2包含在Project-1的依赖项中并尝试过gradle clean build,但是Project-1中生成的fat jar不包含Project-2的jar。我所期望的是,当我运行 fat jar 时,它会在各自的端口中公开两个项目,就像我gradle bootRun在每个项目上一样。

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

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

感谢您的时间。

4

1 回答 1

0

您可以在同一个 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)说来制作一个胖罐。看看这里

一旦创建了项目 1 的胖 jar,它也将包含来自项目 2 的文件,但您将只能运行单个 spring boot 应用程序。

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

于 2020-10-24T10:07:24.453 回答