Я работаю над созданием воспроизводимой сборки для проекта на основе Spring Boot (v2.1.3), для которого я использую gradle (v5.3) в качестве инструмента сборки.
К сожалению, когда я собираюпроект - с использованием задачи bootJar - на двух разных серверах сборки, MD5 результирующих исполняемых JAR-файлов не совпадают.
Обратите внимание, что я использую блокировку версии и включаю следующий пунктв моем файле build.gradle:
tasks.withType(AbstractArchiveTask) {
preserveFileTimestamps = false
reproducibleFileOrder = true
}
Если я выполню ' jar tvf myjarfile.jar ' для файла JAR, созданного на сервере сборки A, и для файла JAR, созданного на сервере сборкиВ, результаты совпадают.
Далее, если я разархивирую два jar-файла и сравню значения MD5 для каждого из соответствующих файлов в этих архивах, эти значения также совпадут.
Что,затем создает несоответствие и как я могу предотвратить или иным образом обойти это?
Если я сравниваю hexdumps двух файлов JAR, я замечаю, что все различия происходят в последней частифайлы.Вот фрагмент из вывода дифоскопа:
019c06a0: 4b01 0042 4f4f 542d 494e 462f 6c69 622f K..BOOT-INF/lib/
019c06b0: 504b 0102 1403 1400 0808 0800 0000 4100 PK............A.
019c06c0: ac57 40fe 7200 0000 8200 0000 1400 0000 .W@.r...........
019c06d0: 0000 0000 0000 0000 a481 a54b 0100 4d45 ...........K..ME
019c06e0: 5441 2d49 4e46 2f4d 414e 4946 4553 542e TA-INF/MANIFEST.
019c06f0: 4d46 504b 0102 1403 1400 0808 0800 0000 MFPK............
019c0700: 4100 604b eb66 7700 0000 ac00 0000 2000 A.`K.fw....... .
-019c0710: 0000 0000 0000 0000 0000 f881 594c 0100 ............YL..
+019c0710: 0000 0000 0000 0000 0000 b481 594c 0100 ............YL..
019c0720: 424f 4f54 2d49 4e46 2f63 6c61 7373 6573 BOOT-INF/classes
019c0730: 2f61 7070 6c69 6361 7469 6f6e 2e79 6d6c /application.yml
019c0740: 504b 0102 1403 1400 0808 0800 0000 4100 PK............A.
019c0750: e4ce f547 e304 0000 1123 0000 2200 0000 ...G.....#.."...
-019c0760: 0000 0000 0000 0000 f881 1e4d 0100 424f ...........M..BO
+019c0760: 0000 0000 0000 0000 b481 1e4d 0100 424f ...........M..BO