Grails auto-reloading new controller actions

2019-04-08 08:36发布

问题:

I've

  1. created new Grails 2.4.3 project
  2. created TestController
  3. set grails.reload.enabled = true in BuildConfig.groovy
  4. run application with grails -reloading run-app

My controller action code:

def index() {
    render "test"
}

When I change the string test to test2- I see in console (in Eclipse):

..................
|Compiling 1 source files

And after reloading page I see test2 - ok.

But when I try to add new method:

def test3() {
    render "test3"
}

I see:

Why? Why there isn't even the url?

Example - action does't exist:

Interesting thing is - when I create a whole new controller the index action of the newly created controller works...

EDIT

After a while I decided to go with spring-boot and as a matter of fact - there it's not working either. I think that springloaded is the issue here because it doesn't pick up added new method in @Controller

回答1:

I've asked the same question on github repo.

It seems that latest spring-loaded SNAPSHOT is working fine.

But it must be integrated into Grails - maybe in the next release unfortunately :(



回答2:

Solution that works for me:

1) Versions:

  • IDE: Intellij IDEA 14.1.3
  • JDK: jdk1.7.0_25
  • GRAILS: 2.5.0

2) On BuildConfig.groovy:

grails.reload.enabled = true
grails.project.fork = [
        test: false,
        run: false,
]

3) Originally, my code was compiled on grails 2.4.4, so I upgraded to 2.5.0. I had no problems with the version change with plugins or anything. My guess is this works because it uses later versions of spring-loaded. Steps:

  • set-grails-version 2.5.0
  • clean
  • delete directory work (just to be sure, I don't really know if this is good practice)
  • compile and/or go to number 4

4) Debug Idea with this configuration: run-app -reloading


Works perfect, no forked debug, reloading enabled, no console error after reload and all breakpoints working even after code changes!



回答3:

I took the liberty of reporting this issue to Grails.