【问题标题】:Is it possible to let play pick up changes in dependencies?是否可以让 play 获取依赖项的变化?
【发布时间】:2015-10-07 08:27:41
【问题描述】:

这是简短的版本

是否应该在它的依赖项中获取变化? 当我在 DEV 模式下更改/lib 目录中的 jar 文件时,播放重新编译,但更改未应用。

这里更详细

我目前正在根据我们当前的应用程序设置一个新的播放应用程序。 我们已经有了一个现有的带有模块的项目结构,我把它放在了/lib 目录中。 到目前为止一切正常

现在的问题与 DEV 模式下的工作流有关:

当我对其中一个模块进行更改时(将其替换为 /lib 目录中的 jar),播放重新编译 ([Info] Compiling ...),但未应用更改。

我也尝试添加一个 jar 作为托管依赖项 (libraryDependencies += "group" % "module" % "1.0" from "file:///path/to/jar"),但它的行为相同。

play/sbt 是否应该获取 jar 文件中的更改?

注意事项:

  • 仅仅重启整个应用程序是不切实际的,因为初始化我们的东西(非播放)需要一些时间...
  • 目前,我们正在使用 jrebel。我还不知道如何设置它(坦率地说,play 的重新加载能力和 jrebel 对我来说太多了;-))

【问题讨论】:

  • 我得出的结论是,我的方法存在缺陷:重新加载依赖 jar 很可能会丢失任何静态字段上的所有状态(想想单例、数据库连接池,等等 - 你不知道)。所以这不是要走的路……所以我试着走 JRebel 路线,并认为我找到了一条路。如果有人感兴趣,我在这里放了一个回购:github.com/schoenberger/play-framework-java-jrebel

标签: playframework playframework-2.4


【解决方案1】:

编译应该会选择新的 jar 文件。

如果失败,您可以尝试在 sbt/play 控制台中运行 cleantest:compile

编辑:

你可以在另一个终端上启动 sbt/play 并运行 ~test:compile

这会在发现新更改后立即监视并重新编译您的应用。

【讨论】:

  • 是的,如果我重新启动应用程序,一切正常(并且更改会被拾取)。我的问题是我想使用 DEV 模式的重新加载功能。到目前为止,我还没有看到 play 发现这里的变化......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 2023-03-16
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多