I've
- created new Grails 2.4.3 project
- created
TestController
- set
grails.reload.enabled = true
inBuildConfig.groovy
- 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
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 :(
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!
I took the liberty of reporting this issue to Grails.
来源:https://stackoverflow.com/questions/25443800/grails-auto-reloading-new-controller-actions