了解 STS:Spring Boot 应用程序在 STS 中运行良好,但使用 gradle 构建 jar 时,构建失败

Posted

技术标签:

【中文标题】了解 STS:Spring Boot 应用程序在 STS 中运行良好,但使用 gradle 构建 jar 时,构建失败【英文标题】:Understanding STS: Spring boot application works fine from STS but when gradle is used to build jar, the build fails 【发布时间】:2021-12-13 08:40:33 【问题描述】:

从 Spring Tool Suite 运行时,我的 Spring Boot 应用程序运行良好。但是,在项目部署时,当我使用 Gradle 命令构建 jar 文件时,出现编译错误 - 错误消息指出缺少特定包。 根本原因是我错过了向 build.gradle 添加特定的依赖项。添加缺少的依赖项后构建成功。

有人能解释一下 STS 如何能够引用“缺失”的依赖项并能够在开发环境中成功运行应用程序吗? 是不是 STS 和 Gradle 有两个不同的依赖存储位置?

【问题讨论】:

不知道您在 STS 中做了什么,这是无法回答的。你只导入构建吗?您是否手动将 jars/modules 添加到 STS 中使用的依赖项列表中,而不是将它们添加到构建中(确实看起来像那样)。 我肯定没有在 STS 中手动添加 jars。我会回忆一下我在 STS 中所做的设置并发布详细信息 我最初的猜测是 - 我将代码 sn-p(与新依赖项相关)从另一个 STS 复制到当前的上述项目中。所以在内部 STS 可能已经获得了新依赖项的信息,因此它在 STS 中工作。我会确认并添加详细信息 如果依赖项是手动添加的,而不是使用 gradle 构建来包含依赖项,它将在 STS 中工作,但在 gradle 构建中不起作用。因为只有 STS 知道,Gradle 不知道。 @M.Deinum 这是否意味着 STS 将维护一个单独的位置,所有依赖类都存在于其中,而 Gradle 维护一个单独的存储库。 【参考方案1】:

当使用 STS(或任何其他 IDE)并且您手动(或通过向导)将 jar 添加到类路径条目中时,这些条目仅在您的 IDE 中可用。

您应该做的是向您的 pom.xmlbuild.gradle 添加额外的依赖项(取决于您的工具),然后您的 IDE 应该再次选择这些依赖项。

注意:一些 IDE 会自动检测到类路径的添加并将它们添加到您的构建文件中。不确定 STS(以及 Eclipse)是否这样做。

【讨论】:

以上是关于了解 STS:Spring Boot 应用程序在 STS 中运行良好,但使用 gradle 构建 jar 时,构建失败的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 在STS里将项目打包成war

spring boot 在STS里将项目打包成war

如何在 STS/eclipse 的多个端口上启动单个 Spring Boot 微服务? [关闭]

如何在spring sts中获取spring boot web项目的默认结构?

Eclipse(STS) 导入本地 spring boot (gradle)多项目

Gradle(包装器)+ STS + Spring Boot:错误:无法找到或加载主类 1.1,