Grails 什么是;“圣杯清洁”;脚本实际上是什么?

Grails 什么是;“圣杯清洁”;脚本实际上是什么?,grails,Grails,我对grailsclean命令很好奇。一旦我将错误的包导入域类,它就是java.util.regex。我用它来执行regex replace命令,但结果是一切都没有改变,所以我认为我的regex是错误的。但我把它放在那里以备将来改进 我的localhost中的web应用程序运行正常,但其他程序员告诉我,他们在试图编译我的代码时出现了编译错误。我关闭grails,然后再次启动它,但它仍然正常运行。只有在运行grails clean之后,才会出现编译错误 因此,应用程序似乎一开始就忽略了我的更改。在

我对
grailsclean
命令很好奇。一旦我将错误的包导入域类,它就是
java.util.regex
。我用它来执行regex replace命令,但结果是一切都没有改变,所以我认为我的regex是错误的。但我把它放在那里以备将来改进

我的localhost中的web应用程序运行正常,但其他程序员告诉我,他们在试图编译我的代码时出现了编译错误。我关闭grails,然后再次启动它,但它仍然正常运行。只有在运行
grails clean
之后,才会出现编译错误

因此,应用程序似乎一开始就忽略了我的更改。在文件中,他们说:

如果您的Grails应用程序 被搞砸了,想出了 神秘的错误消息请尝试:

grails clean


我对这个“神秘”的东西有点困惑。那么,
grailsclean
实际上做什么呢?什么样的资源不会被再次编译,除非调用了
grailsclean

clean脚本删除已编译的类、属性文件和其他复制到classes目录的非源资源,以及其他类似测试报告的内容

您看到的问题是增量编译。一般来说,它相当可靠,但在Java中可能失败,不幸的是,在Groovy中更可能失败,因为它是一种动态语言。很难在所有其他类上检测到一个类中的全部更改范围,有时更改会被忽略。如果你幸运的话,很明显有什么地方出了问题,但有时你可能会花一些时间去思考为什么会发生一些非常奇怪的行为

因此,最好的做法是始终进行完整编译,无论是纯Java还是Groovy与Java的混合编译。由于这很昂贵(特别是对于较大的项目),因此尽可能多地使用增量编译就足够了,但偶尔会强制使用
grailsclean
进行完整编译

grails clean
clean
命令从应用程序中删除所有编译的资源。但不是临时文件

clean all
命令删除所有编译的资源以及工作目录,其中包含特定于项目的临时文件


由于Groovy是一种编译语言,就像Java一样,这有时对于清除类的旧实例和确保正确编译很有用。在运行测试或创建WAR文件之前运行这些脚本也是一个好主意,以确保进行完整编译。

实际上,我正在寻找更详细的答案。但是你所提供的是有帮助的。无论如何,谢谢你。关于重新编译你是对的。。。只编译对我来说已经很痛苦了。这里有一个链接,指向负责
clean
clean all
命令的实际文件:
cleanciledsources
方法主要是我在运行
clean
命令时想到的,但是
cleanWarFile
也会被调用。
grails clean-all