Как определить, являются ли 2 .jar файлы версиями «одинаковыми»? - PullRequest
0 голосов
/ 29 марта 2019

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

Иногда поставляемые сборки содержат дубликаты jar с разными версиями, например, log4j-1.2.3.jar и log4j-1.2.4.jar, что нарушает наш процесс развертывания.

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

Мне пришло в голову посмотреть содержимое файла jar, а именно файл MANIFEST.MF, для свойства, уникального для этого файла.

Такое свойство должно:

  • всегда присутствовать в любом файле .jar MANIFEST.MF
  • быть общим для всех версий / сборок этого .jar
  • быть уникальным для этого .jar (например, должно отличаться для log4j и log4j-api)

Я проверил содержимое нескольких файлов манифеста и Implementation-Title или Export-Package кажутся хорошими кандидатами, но я не уверен, что они соответствуют критериям, указанным выше.

Как лучше всего определить, есть ли у нас дубликаты .jar-файлов?

...