gradle 持续构建是不是支持 SpringBoot?

Posted

技术标签:

【中文标题】gradle 持续构建是不是支持 SpringBoot?【英文标题】:Does gradle continuous build support SpringBoot?gradle 持续构建是否支持 SpringBoot? 【发布时间】:2015-10-09 07:43:22 【问题描述】:

当我尝试使用带有 -t 标志的 gradle 运行 build 时:

./gradlew clean build -x test -t

我得到提示行:

等待对任务输入文件的更改...(ctrl-d退出)

但是当我使用bootRun 命令尝试它时它不起作用/出现:

./gradlew clean bootRun -t

它是否适用于 Spring Boot? (我知道 Spring dev tools plugin - 1.3 还没有发布)

【问题讨论】:

【参考方案1】:

andy-wilkinson 的回答是正确的:gradle bootRun 永远不会完成,因为某些应用程序会无限期地运行。它在issue in the grails project 中有详细记录。

我找到了一种强制 bootRun 从命令行实时重新加载应用程序的方法。这里的关键项目是gradle daemon 和spring-boot-devtools 包。

要让它实时重新加载,您需要打开 2 个终端。

    gradle build --continuous

    build --continuous 将继续满足初始构建请求,直到停止 gradle build --continuous --quiet & 2>1 >/dev/null 在后台运行,但您会错过重要的构建警告/错误。 gradle --stop 停止观看。

    gradle bootRun

    Bootrun 以类路径上的 spring-boot-devtools 开头,它将检测更改并重新启动应用程序。

【讨论】:

【参考方案2】:

这取决于您的 Spring Boot 应用程序的性质。如果您的应用程序通常运行然后退出,那么持续构建将起作用。但是,如果您的应用程序通常无限期地保持活动状态,例如因为它是一个处理 HTTP 请求的 Web 应用程序,那么它将无法工作。在后一种情况下,bootRun 任务永远不会完成,因此 Gradle 不知道是时候开始观察变化了。

【讨论】:

感谢您的解释。在这种情况下,您知道这种无限期任务(例如 bootRun)的解决方法吗?

以上是关于gradle 持续构建是不是支持 SpringBoot?的主要内容,如果未能解决你的问题,请参考以下文章

如何针对构建持续时间和 RAM 使用优化 gradle 构建性能?

使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

技术分享 | Jenkins 持续集成体系介绍

Android Gradle 插件Gradle 参考文档收集 ( 持续更新 ) ★★

Jenkins的部署方式

jenkins 入门教程