Сравнение двух разных версий нескольких файлов JAR

1

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

Я хотел бы написать это в сценарии bash, но я пытаюсь найти лучший метод для этого, потому что проблема заключается в том, что путь к банкам (и самому имени jar) не совпадает с каждым счетчик часть. Так, например...

Сравнение файла jar:

2.2.9/com.project/dns-pool/1.2.2/dns-pool.1.2.2.jar

в

trunk/com.project/dns-pool/2.7.7/dns-pool.2.7.7.jar

Поэтому по существу мне нужно будет перебирать все папки внутри туловища и сравнивать их с ним.

  • 0
    Если бы путь и имя были идентичны, это был бы один и тот же файл, и вы бы сравнили его с самим собой ... Все системы контроля версий имеют команду сравнения diff like для сравнения бранчей ... Если вы хотите сравнить jar s Я бы посоветовал вам сначала распаковать их, а затем использовать BeyondCompare для сравнения структур dir.
  • 0
    Что вы пытаетесь сравнить между этими двумя примерами файлов? Содержание скомпилировано байт-кодом Java, не так ли? Что вы хотите сделать с этим содержимым? Какого рода результаты вы надеетесь получить?
Теги:

1 ответ

0
Лучший ответ

Я должен был это долгое время назад и в основном делал следующие 3 шага.

  1. Переименуйте файлы jar в.zip и извлеките все файлы классов
  2. Декомпилируйте файлы классов из каждой банки отдельно в две папки (folder_dns_1_2_2 и folder_dns_2_7_7). (поиск google для декомпиляторов java и поиск того, что будет декомпилировать и всю папку/подпапку рекурсивно)
  3. Используйте инструмент сравнения, чтобы сравнить две папки. Некоторые инструменты будут рекурсивно сравнивать исходный код в подпапках и выплевывать полный результат.

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

Там могут быть ложные срабатывания, если две банки были скомпилированы разными версиями JRE. Но в целом вы должны уметь выявлять очевидные различия. Благодаря хорошим инструментам сравнения вы сможете "игнорировать" определенные различия.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню