Есть ли способ сравнить два файла войны Java - PullRequest
5 голосов
/ 29 марта 2010

Некоторое время назад мы создали несколько военных файлов для нашего веб-сервера и теперь восстановили их.

Чтобы убедиться, что ничего не изменилось (и как проверка качества), мы попытались сравнить их с помощью WinMerge. Различия, которые мы видим, выглядят так, как будто они связаны с какими-то метаданными, например, файлы строятся в разные даты?

Различия в линиях кажутся постоянными, например,

«d} <</p>

и

³Ze <</p>

Военные файлы по-прежнему имеют одинаковый размер.

Есть ли способ сравнить их, которые удаляют метаданные, такие как дата?

Ответы [ 7 ]

7 голосов
/ 12 июля 2017

Я обычно использую подобный подход и запускаю 2 команды разархивирования и разрабатываю вывод при необходимости. Например, мне нужно сравнить 2 файла Java WAR.

$ sdiff --width 160 \
   <(unzip -l -v my_num1.war | cut -c 1-9,59-,49-57 | sort -k3) \
   <(unzip -l -v my_num2.war | cut -c 1-9,59-,49-57 | sort -k3)

В результате получается вывод:

--------          -------                                                       --------          -------
Archive:                                                                        Archive:
-------- -------- ----                                                          -------- -------- ----
48619281          130 files                                                   | 51043693          130 files
    1116 060ccc56 index.jsp                                                         1116 060ccc56 index.jsp
       0 00000000 META-INF/                                                            0 00000000 META-INF/
     155 b50f41aa META-INF/MANIFEST.MF                                        |      155 701f1623 META-INF/MANIFEST.MF
 Length   CRC-32  Name                                                           Length   CRC-32  Name
    1179 b42096f1 version.jsp                                                       1179 b42096f1 version.jsp
       0 00000000 WEB-INF/                                                             0 00000000 WEB-INF/
       0 00000000 WEB-INF/classes/                                                     0 00000000 WEB-INF/classes/
       0 00000000 WEB-INF/classes/com/                                                 0 00000000 WEB-INF/classes/com/
...
...

Я предпочитаю такой подход, так как он не требует места для распаковки файлов и их сравнения.

6 голосов
/ 29 марта 2010

вы можете использовать eclipse для сравнения файлов jar / war. http://www.javalobby.org/java/forums/m91839415.html

В ссылке не упоминается файл войны. Я использую Indigo, кажется, затмение поддерживает только сравнение jar, поэтому мне нужно переименовать расширение войны в jar, чтобы получить затмение для сравнения конструкций.

6 голосов
/ 29 марта 2010

Будет проще, если вы сначала распакуете их, а затем сравните папки.

В Windows вы можете просто использовать исполняемый файл 'jar', который поставляется с jdk

jar -xvf xxxx.war

Затем вы можете использовать WinMerge для сравнения 2 папок.

Надеюсь, это поможет

6 голосов
/ 29 марта 2010

WAR-файлы в основном Zip-файлы.Почему бы не извлечь содержимое и сравнить каждый файл по очереди?Это позволяет избежать любых метаданных, являющихся частью файла WAR.Вы также можете выяснить, какие на самом деле различия, если таковые обнаружены.

0 голосов
/ 27 февраля 2019

Просто используйте pkgdiff:

pkgdiff a.war b.war

Легко доступный в Linux, довольно разборный вывод (вы также можете проверить код состояния из скрипта bash). Он также генерирует отличный HTML-отчет.

0 голосов
/ 26 января 2017

Вы можете настроить WinMerge для сравнения zip-файлов (и, кстати, .WAR-файлов), если вы установите плагин 7zip в WinMerge. Имейте в виду, что это не очень легко установить, вы должны установить плагин, он сделан из .dll и должен быть извлечен в папку .... Честно говоря, я не помню, как я это сделал. В конце концов я поверил, что использовал автономную опцию установки и использую версию плагина 9.20.

Хотя иногда Winmerge говорит мне, что в файлах .class есть различия, он выделяет двоичную строку, но я не вижу никакой разницы. По крайней мере, вы можете сравнить структуру военных папок.

0 голосов
/ 04 июля 2016

Воспользуйтесь бесплатной пробной версией "Beyond Compare" ... (или купите ее) Я думаю, что это единственный инструмент, который может это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...