Я строю Java-проект с Gradle и хочу опубликовать файлы контрольной суммы вместе с артефактами моей сборки.Проблема в том, что повторные сборки генерируют разные контрольные суммы без каких-либо изменений кода.Потратив некоторое время на поиски проблемы, причина стала совершенно очевидной:
- Сгенерированные файлы классов получают метку времени создания / изменения того времени, в которое они были созданы ( отличная находка !! )
- Эта дата изменения добавляется в качестве метаданных в сгенерированные архивы jar / zip, что приводит к различиям в контрольной сумме
То есть практически невозможно восстановить определенную версиюв более поздний момент времени будут выводиться идентичные файлы.
Я думаю, что это довольно легко "исправить", изменив дату модификации / создания артефактов после создания на некоторое значение по умолчанию.Но это привело бы к каким-то странным метаданным в архивах - что-то вроде 1970-01-01T00:00:00Z
было бы совершенно очевидно, но на первый взгляд все еще сбивало с толку.
Есть ли другой способ, возможно, полностью исключить метаданные меток времени при созданиииз архивов.Или удалить его после создания архивов?
Или, может быть, есть какой-нибудь другой способ заставить повторные сборки генерировать идентичных артефактов?
Мне действительно интересно, чтолучшая практика для этого сценария?!