在开发期间使用 Gradle 在 Spring Boot 的 JAR 中包含 DevTools

Posted

技术标签:

【中文标题】在开发期间使用 Gradle 在 Spring Boot 的 JAR 中包含 DevTools【英文标题】:Including DevTools in Spring Boot's JAR with Gradle during development 【发布时间】:2021-12-18 19:09:03 【问题描述】:

我一直在寻找答案,但到目前为止我发现的几乎所有东西都已经过时或不起作用。我想在我的 JAR 中包含 Spring DevTools,以便我可以使用实时重新加载功能。

到目前为止我做了什么;

    使用 ./gradlew bootBuildImage 构建 Docker 映像。 创建了一个使用此图像的docker-compose.yml。 将 IntelliJ 中的配置更改为使用 org.springframework.boot.devtools.RemoteSpringApplication 作为主类。

但是,当我更改某些内容并构建项目时,我总是会遇到同样的错误:

Exception in thread "File Watcher" java.lang.IllegalStateException: Unexpected 404 NOT_FOUND response uploading class files

我是否需要更改构建映像的方式或应用一些额外的 Gradle 配置才能使其正常工作?对于 Maven,只需将 excludeDevTools 设置为 false 就足够了,但看起来它不适用于 Gradle。

【问题讨论】:

这可能对你有帮助github.com/spring-projects/spring-boot/issues/22533 【参考方案1】:

通过在build.gradle.kts 中添加这个来解决它;

tasks.getByName<BootJar>("bootJar") 
    classpath(configurations["developmentOnly"])

【讨论】:

以上是关于在开发期间使用 Gradle 在 Spring Boot 的 JAR 中包含 DevTools的主要内容,如果未能解决你的问题,请参考以下文章

在Eclipse中使用建立使用Gradle做依赖管理的Spring Boot工程

当我在开发模式下停止应用程序并将 build.gradle.kts 与 spring boot 一起使用时出错

在 Idea 中使用 Angular2 TypeScript 开发 Spring Boot 应用程序:gradle processResources wathing mode Wanted

如何在多模块spring boot应用程序gradle中只访问不同模块的一个类?

使用 Gradle 和 Docker 部署 Spring Boot/PostgreSQL 项目

idea spring-boot gradle mybatis