【问题标题】:Grails 2.3.0 Auto-reloading not workingGrails 2.3.0 自动重新加载不起作用
【发布时间】:2013-09-23 19:46:52
【问题描述】:

我最近将我们的项目升级到 grails 2.3.0。一切正常,除了我在更改代码时遇到自动重新加载无法正常工作的问题。这包括所有项目人工制品 - 控制器、域、服务、gsps、css 和 javascript 文件。

我的旧版本 grails 可以正常工作,并且每次我进行更改时都会重新加载和重新编译。

我知道这个问题很受欢迎,并且我已经搜索了 Jira、Nabble 和这里​​好几天了,但是我发现没有一个能够解决我的问题(我什至尝试像 Peter 在这个线程中建议的那样添加引号http://jira.grails.org/browse/GRAILS-7936 和这个线程 Grails Project Not Auto Reloading 也没有帮助)。

我目前正在使用以下设置在 Macbook pro 上运行 grails:

  • grails 2.3.0 版
  • Java 版本“1.7.0_17” Java(TM) SE 运行时环境 (build 1.7.0_17-b02) Java HotSpot(TM) 64 位服务器 VM(内部版本 23.7-b01,混合模式)
  • 使用 Textmate 作为 IDE 从终端运行

任何帮助将不胜感激。

【问题讨论】:

  • 试试grails -reloading run-app
  • 我刚刚尝试过,但它不起作用。保存后自动重新编译也不起作用。
  • 我刚刚尝试在另一台机器上使用 2.3.0。我创建了一个新项目。我仍然遇到同样的问题。在这台新机器上不处于交互模式时,Alidad 的解决方案似乎可以工作,但这不应该是开发的默认设置吗?仍然需要它在我的 Mac 和交互模式上工作。任何帮助将不胜感激。

标签: java grails grails-2.3


【解决方案1】:

似乎在 Grails 2.3 中重新加载不再是默认设置

在 Grails 2.3 中,重新加载代理不再位于构建系统上 路径,除非您将 -reloading 标志传递给 grails 命令:

grails -reloading run-app

但是,您可以使用以下配置在 buildConfig 中启用分叉:

forkConfig = [maxMemory: 1024, minMemory: 64, debug: false, maxPerm: 256] 
grails.project.fork = [    
  test: forkConfig, // configure settings for the test-app JVM    
  run: forkConfig, // configure settings for the run-app JVM    
  war: forkConfig, // configure settings for the run-war JVM    
  console: forkConfig // configure settings for the Swing console JVM ]

更多信息:Forked Execution and the Reloading Agent

【讨论】:

  • 没错。我应该在升级之前阅读文档(嗯,我做过,但从未接触过那部分)。我没有使用分叉的 JVM,这就是为什么。我已将其注释掉,但取消注释后它会再次自动重新加载/重新编译。谢谢大佬。
  • 在 BuildConfig 中设置这个 grails.reload.enabled = true
  • 在 BuildConfig.groovy 中设置“grails.reload.enabled = true”对我不起作用。仅当我使用“grails -reloading run-app”或注释(或禁用)BuildConfig.groovy 中的 fork 配置时才有效。我的 Grails 是 2.4.3。
  • 我使用的是 Grails 2.4.4。尽管每当我对控制器进行更改(例如修改要呈现的文本)时都会看到“正在编译 1 个源文件”,但更改根本不会在浏览器中生效。有什么想法吗?
  • @Sofia 我也遇到了同样的问题,请问有解决办法吗?
【解决方案2】:

我正在使用 Grails 2.4.3 和 IntelliJ 13,我发现我必须在 run-app 命令的末尾添加 -reloading 部分。

换句话说,当您编辑运行/调试配置时,在“命令行”部分输入run-app -reloading 而不是-reloading run-app

我从用户 longwa 那里找到了这个解决方案 here

【讨论】:

  • 这很有趣,因为对我来说(升级到 IntelliJ 14)又是相反的 :) - 我使用:-reloading run-app
  • 2.5.0 之前或之后放置 reloading 对我不起作用。
  • 将 -reloading 附加到 run-app 命令的末尾(中间有 -https 等其他选项)也对我有用。我认为 intellij idea 需要尽快解决这个问题。
【解决方案3】:

Grails 2.4.x 保持相同的支持:

grails -reloading run-app

一旦文件系统中的“监视”文件发生更改,日志将显示重新加载的状态:

2014-09-23 00:42:02,666 [localhost-startStop-1] INFO  conf.BootStrap  - Checking for registries in system env
| Server running. Browse to http://localhost:8080/docker-registry-ui
| Compiling 1 source files.....

【讨论】:

  • 我在重新加载控制器和服务时遇到异常(尽管更改已正确重新加载)。 “grails -reloading run-app”在我的 Grails 2.4.3 上就像一个魅力,我没有得到更多的例外。
  • 即使在尝试重新加载选项并启用了分叉的 tomcat 之后,当我添加新操作时,控制器也不会自动重新加载。我必须将此作为 grails 2.4.3 的新问题发布
【解决方案4】:

我无法通过上述任何建议解决我的重新加载问题。就我而言,问题是我的路径,它包含一个空格!花了我几天的时间和一半的胡须,但终于弄明白了。 我的路径类似于:~/Box Sync/path/to/projectBox Sync 中的那个空格是隐藏的坏人。 我相信它与这张票有关https://github.com/grails/grails-core/issues/9344

【讨论】:

  • 感谢您的回答。我不认为我的工作区名称是问题所在。
  • 如果平台可以打印一些难以解决的错误行为的“不允许没有空格的路径”,那就太好了。
  • 伟大的发现!非常感谢..经过2天的努力,我知道了这一点。但现在很高兴知道真正的原因。它总是显示......改变,重新编译......但实际上从未发生过
【解决方案5】:

我不需要在命令行中运行-reloading,它的问题是springloaded.jar。

将 grailsHome/lib/org.springframework/springloaded 中的 springloaded 文件夹替换为 grails sdk 2.4.3

https://mega.co.nz/#F!INgVnboD!r7ssrFy9TiCQ50ROqxWt8g

我在 grails 2.5.0 和 2.4.* 中测试过。*

【讨论】:

  • mega 文件夹无效。从 grails 官方目录下载 grails 2.4.3。并替换 springloaded 文件夹。
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
相关资源
最近更新 更多