私はgrailsインタラクティブモードで実行しているgrailsアプリケーションを持っています。このアプリケーションには、サービス、tagLibs、gsps などが含まれていますが、最も重要なのは、src/groovy フォルダーに groovy ファイルが含まれていることです。
これらの groovy ファイルの 1 つはAppConstants.groovyと呼ばれ、多数の静的変数が含まれています。
public static final String VARIABLE1 = "VARIABLE VALUE"
これを非インタラクティブ モードで実行しても問題はありません。この変数に加えられた更新は、次回のデプロイ時に実行中のアプリに反映されます。ただし、インタラクティブ モードでは、 と を呼び出しても、変数に加えられた変更はVARIABLE1
アプリに反映されません。変更を反映するには、対話モードを終了して再起動する必要があります。exit
run-app
最初は、これはキャッシュの問題である可能性があり、静的な最終変数がキャッシュされていて、JVM が再起動されていないため、このキャッシュが更新されていないのではないかと考えました。ただし、これまでアプリケーションに存在しなかった新しい変数を追加すると、インタラクティブ モードが再起動されるまで、アプリケーションの残りの部分では使用できないことに気付きました。
この背後にある理由は何ですか?exit
対話型コンソールでこれを見ることができるように、クラスはコンパイルされているため、必ずしも実行中ではなく、少なくともrun-app
.
追加情報: Grails バージョン 2.1.0