我对这个grails clean命令感到好奇.一旦我将错误的包导入域类,它就是java.util.regex.我用它来做一个正则表达式替换命令,但事实证明一切都没有改变,所以我认为我的正则表达式是错误的.但我把它留在那里以供将来改进.
我的localhost中的web-app正常运行,但其他程序员告诉我,当他们尝试编译我的代码时,他们编译错误.我关闭grails然后再次启动它,但它仍然正常运行.只有捉迷藏后grails clean的编译错误出现.
因此,应用程序似乎首先忽略了我的更改.在文档中,他们说:
如果您的Grails应用程序被搞砸了,并提出了神秘的错误消息,请尝试:
grails clean
我对这个"神秘"的东西有点困惑.那grails clean实际上做了什么?什么样的资源不会被再次编译,除非grails clean被调用?
Bur*_*ith 17
clean脚本删除已编译的类和属性文件以及复制到类dir的其他非源资源,以及测试报告等其他内容.
您看到的问题是增量编译.它一般来说相当可靠,但可能会因Java而失败,不幸的是Groovy很可能因为它是一种动态语言.很难在所有其他类中检测到一个类的更改的全部范围,有时会更改错过.如果你很幸运,很明显有些事情是错的,但有时可能需要一段时间才能想知道为什么会出现一些非常奇怪的行为.
因此,最好的做法是始终进行完整的编译,无论是纯Java还是Groovy和Java的混合.由于这很昂贵(特别是对于较大的项目),尽可能使用渐进式编译就足够了,但偶尔强制进行完全编译grails clean.
小智 5
grails clean
Run Code Online (Sandbox Code Playgroud)
该命令将从应用程序中
clean删除所有已编译的资源。但不是临时文件。
grails clean-all
Run Code Online (Sandbox Code Playgroud)
该
clean-all命令删除所有已编译的资源以及工作目录,其中包含特定于项目的临时文件。
由于 Groovy 与 Java 一样是一种编译语言,因此有时这对于清除类的旧实例并确保正确编译很有用。在运行测试或创建 WAR 文件之前运行这些脚本也是一个好主意,以确保进行完整编译。