我从没有真正研究过它,但是现在我意识到我无法轻松地构建两个相同的.jar文件。
我的意思是,如果我进行两次构建,而没有进行任何更改,则。jar的大小将完全相同,但校验和将不同。
所以我迅速进行了一些测试(基本上是unzipping,sort -n -k 5 ing,然后是diff'ing),以查看所有文件inside .jar相同,但.jar不同。
所以我用一个简单的。zip文件进行了测试,发现了这一点:
... $ zip 1.zip a.txt
... $ zip 2.zip a.txt
... $ ls -l ?.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 1.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 2.zip
(完全相同的[[.zip文件大小)]
... $ sha1sum ?.zip
db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf 1.zip
eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91 2.zip
((不同的SHA-1总和,让我们看看为什么)
$ hexdump 1.zip -C > 1.txt $ hexdump 2.zip -C > 2.txt $ diff 1.txt 2.txt 3c3 < 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*4e*d5 46 4c |txtUT.....FLN.FL| --- > 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*5d*d5 46 4c |txtUT.....FL].FL|
解压缩两个zip文件肯定会返回我们唯一的文件。问题:为什么? (我会自己回答)
(对自己的回答)这是因为。zip文件格式在其标题中节省了创建和修改时间。
如果您确实要创建两个相同的。zip
(或。jar),则必须使第二个相信它是与第一个完全同时创建/修改的。