如何从 Gradle Multi Build 项目中发布 Spring Boot 应用程序?

Posted

技术标签:

【中文标题】如何从 Gradle Multi Build 项目中发布 Spring Boot 应用程序?【英文标题】:How to ship a Spring Boot app from a Gradle Multi Build project? 【发布时间】:2021-03-01 08:42:59 【问题描述】:

假设我有一个 Gradle 多项目,其中包含 3 个子项目、2 个 Spring Boot 项目(authprofile)和 1 个库项目(commons)。

这 2 个 Spring Boot 项目包括对 Library 项目的依赖:implementation project(":commons")

实际上,要运行 2 个 Spring Boot 项目,我必须从父项目中运行它:

gradlew auth:bootRun
gradlew profile:bootRun

如果我只运行 gradlew bootRun,从每个 Spring Boot 子项目中,我会收到类似 :commons Library 项目未在根项目中找到的错误,这是有道理的,因为 :commons 项目仅包含在父母的settings.gradle 文件。

我必须将每个 Spring Boot 子项目单独推送到 Heroku。

我应该如何管理?

【问题讨论】:

【参考方案1】:

终于搞定了,把这个加到每个子项目的settings.gradle文件里,然后编译:

include ":commons"
project(':commons').projectDir = new File('../commons')

【讨论】:

首先你不应该在每个子项目中都有settings.gradle。如果你这样做了,它就不再是一个多项目,而是完全独立的、不相关的项目。如果这是故意的,因为您出于某种原因确实不想将其构建为一个多项目,您应该查看composite builds。 好的,这可能就是为什么我仍然有部署问题。我能够在本地运行该应用程序,但是当我将其推送到 Heroku 时,我遇到了同样的错误,项目 :commons 未解决。请你检查这个问题:***.com/questions/64891154/…

以上是关于如何从 Gradle Multi Build 项目中发布 Spring Boot 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target”

如何在 build.gradle 中定义和调用自定义方法

Gradle build.gradle 到 Maven pom.xml

Maven:如何使用 build.gradle 文件?

如何使用单个build.gradle配置向kotlin多平台项目添加依赖项

如何在颤振项目上手动运行 gradle build