I think this is a good question to post on the Gradle forums, as I’m probably not the only one who will run across this situation.
So I want to migrate from Gradle 1.3 to 1.4, and I’m using the ‘compare-gradle-builds’ plugin to assist me.
Here is my task config.
compareGradleBuilds {
targetBuild.gradleVersion = "1.4"
}
Now it turns out that I have a subproject that implements a screenscraper based on the Geb Project. Geb is a browser automation tool implemented in Groovy. It’s working well for me.
When I execute the compareGradleBuild task, the compare fails in exactly the same way on a lot of classes that use Geb. Here is the failure explanation in the comparison report Gradle generates:
“entries are of identical size but have different content”
So I chose one class, GebConfig.class, and dissassembled the source and target versions with javap.
I send the disassembled versions to source.dis and target.dis, then I diff the files, hoping to find something interesting, as I have nothing else to go on. Here is what I see:
$ diff source.dis target.dis
7c7
< public static long __timeStamp__239_neverHappen1360272069931;
---
> public static long __timeStamp__239_neverHappen1360272209698;
224c224
<
6: putstatic #129; //Field __timeStamp__239_neverHappen1360272069931:J
---
>
6: putstatic #129; //Field __timeStamp__239_neverHappen1360272209698:J
227c227
<
11: ldc2_w #130; //long 1360272069931l
---
>
11: ldc2_w #130; //long 1360272209698l
So yes, the source and target class files are different, but they are not different in a way that I care about for build comparison purposes.
I guess my question is: what’s putting the timestamp in these class files? Groovy or Geb or neither?
Thanks.