【问题标题】:Gradle: Hot deploy changes to a dependencyGradle:对依赖项进行热部署更改
【发布时间】:2014-06-19 16:44:01
【问题描述】:

我有一个环境,我有一个 java(spring mvc) webapp,由 intellij 上的一个 n 成员团队开发,并使用 gradle 作为构建代理。该项目有一个依赖项,该依赖项也由同一团队开发。依赖项发布到一个存储库,spring mvc 应用程序从该存储库读取它。发生的情况是,每次依赖代码发生更改时,都必须刷新 spring 应用程序代码以包含最新版本的依赖代码。所以,问题是有没有一种方法可以在运行时在依赖代码中进行代码交换,并让它在调试会话中生效,就像 JRebel 所做的一样,只是它需要在依赖代码中进行。

对此的任何意见将不胜感激。

P.S- 我标记了 gradle 和 jrebel,因为可能有一种方法可以通过这个技术堆栈实现这一点。

【问题讨论】:

  • 为什么要这么费劲?创建脚本来更新和重新部署依赖项目不是更容易吗?
  • 嗯,可以的。但重点是在调试时,可以修改和交换依赖代码。我不认为使用脚本可以实现这一点。可能我错了。请指教。
  • 我不知道有任何工具可以满足您的要求。重新运行应用程序需要做很多工作吗?如果依赖版本具有-SNAPSHOT 后缀,maven 将始终从存储库中获取/下载最新版本。
  • 我认为我不需要工具。也许需要一种不同的方式来让 Spring 应用程序读取依赖代码。
  • -SNAPSHOT 是一个专家级的东西。我在gradle中没有运气。重新运行应用程序是目前正在做的事情。但我正在寻找一种更好(更快)的方法来做到这一点。我想做的是避免这里提到的情况i.stack.imgur.com/gtCJT.jpg

标签: java spring-mvc gradle jrebel hotdeploy


【解决方案1】:

JRebel 可以监控 jars,尽管它的效率不是很高。在 rebel.xml 配置文件中你可以指定一个<jar> 标签指向文件系统中依赖的位置。

更好的方法是实际使用源代码,以便您使用指向已编译类所在位置的rebel.xml 部署依赖项,然后像使用源代码一样使用依赖项,从需要时进行版本控制并编译更改。如果您的编译器是增量式的,那么它将只编译更改的类,而 JRebel 不必一次重新加载太多的类,而只需重新加载更改。

【讨论】:

  • 安东,我有点同意你的评论。通过 rebel.xml 部署依赖项似乎我现在将在两个地方部署依赖项的责任分开。不过,这似乎确实可行。
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
相关资源
最近更新 更多