Нужен инструмент для сравнения двух файлов .ear рекурсивно - PullRequest
8 голосов
/ 03 января 2011

Я изменяю процесс сборки, и мне нужно сделать полное сравнение содержимого двух .ear-файлов.Это означает рекурсивное сравнение каждого архива в .ear.Эти файлы .ear имеют архивы, которые содержат архивы.

Я смотрел на Beyond Compare и Archive Analyzer, но они выполняют только один уровень за раз.Я должен вручную развернуть каждый архив.Я ищу что-то более автоматическое.

Eclipse и UltraCompare делают двоичное сравнение двух .ears, а это не то, что мне нужно.

Существует ли такой инструмент?

Ответы [ 3 ]

5 голосов
/ 08 ноября 2012

zipdiff предоставляет очень хорошее решение с открытым исходным кодом.

4 голосов
/ 07 января 2011

Моя проблема оказалась чем-то большим, чем просто рекурсивное расширение файла .ear (для этого я написал Java-класс - рекурсия сделала его простым.) Когда файлы .ear расширены, мне нужно проверить каталоги, чтобы проверить, любые изменения. Если что-то отличное от отметок времени изменилось, я знаю, что сборка создает другой двоичный файл.

Вторая проблема состоит в том, что наш процесс сборки генерирует сотни файлов .xml, а последующие сборки повторно генерируют эти файлы .xml с элементами в другом порядке. Я не уверен почему. Когда я раскрываю два файла .ear, создаваемых в параллельных сборках, без каких-либо изменений, различия в результирующих каталогах показывают сотни файлов .xml с различиями, даже если они функционально эквивалентны.

В дополнение к рекурсивному расширению файлов .ear мне нужно сделать diff и исключить файлы .xml в определенных каталогах. Я думал, что Cygwin diff сделает это, но ключ --exclude не распознает информацию о пути:

Cygwin diff не будет исключать файлы, если в шаблон включен каталог

Если я не найду решения для этого, я напишу еще один класс Java, чтобы пройти по всей структуре каталогов, выполнив один уровень различий в каждом каталоге и исключив файлы .xml в соответствующих каталогах.

У меня такое чувство, что я заново изобретаю колесо, но сейчас я не могу найти колесо.

1 голос
/ 03 января 2011

В Beyond Compare перейдите в диалоговое окно Session Settings, а на вкладке Handling есть опция Archive Handling.Если он установлен на As folders always BC будет обрабатывать архивы так же, как папки, поэтому он полностью рекурсивный.

...