我在我的 Grails 项目中更改了几个类并构建了一个 war 文件。然后,我将新战争中的 .class 文件与我更改之前构建的战争中的文件(在另一台机器上,如果这很重要)进行比较,结果发现许多(如果不是全部).class 文件是不同的。查看反编译的类,似乎差异是因为变量中的时间戳,例如:
public static long __timeStamp__239_neverHappen1360886953029;
有谁知道这个变量是什么?
它来自 groovy 类生成。
在这里查看一些讨论http://groovy.329449.n5.nabble.com/Timestamp-in-class-files-leads-to-huge-patches-td365696.html
为了完整起见,在此引用:-
对于 Groovy 自己的重新编译机制。源并不总是文件形式,所以我们不能“仅仅”检查文件时间戳,所以我们必须将该时间戳存储在某个地方......并且比在类本身更好,因为这就是我们所拥有的?
2009 年 3 月 3 日星期二 10:39,Jason Dillon <[hidden email]> 写道:
为什么 groovyc 会捕获编译时间戳?那有什么好处?
这在 Groovy 2.4 中发生了变化,.class 文件不再包含时间戳字段。