我有一個grails應用程序,我通過grails交互模式運行。這個應用程序包含服務,tagLibs,GSPS等,但最重要的是它包含在src/groovy文件夾中的groovy文件。Grails交互模式中的靜態字符串
其中一個常規文件被稱爲AppConstants.groovy,幷包含靜態變量的大量即
public static final String VARIABLE1 = "VARIABLE VALUE"
當在非交互模式下,我得到沒有問題運行這個,這個變量所做的任何更新反映在正在運行的應用程序下一次部署時。然而,在交互模式下,即使您撥打exit
和run-app
,也不會在應用中反映對VARIABLE1
變量所做的任何更改。要反映的變化必須退出並重新啓動交互模式。
起初我以爲這可能是一個緩存問題,我的靜態最終變量被緩存,並且由於JVM沒有被重新啓動,所以這個緩存永遠不會被更新。然而,我注意到在添加一個新的變量之前,在應用程序之前從未存在過的變量在我的應用程序的其餘部分中不可用,直到重新啓動交互模式爲止。
任何想法背後的原因是什麼?該類正在編譯,因爲我可以在交互式控制檯中看到這一點,所以可以預期任何更改都會反映到應用程序中,而不一定在運行時,但至少在exit
後跟run-app
。
額外的信息:Grails的2.1.0版本
也許交互模式無法看到文件已更改?如果你只是運行應用程序,出現消息「編譯1源文件」? –
是的,正如我所提到的,它編譯文件,我可以在交互模式下看到它,但即使在重新編譯,停止和運行應用程序後,即使在清理後仍然無法識別編輯或添加靜態最終字符串直到交互模式完全重啓之後。 –