Как проверить, является ли банка Multi-Release

Отделение этого от первоначальный вопрос, который у меня возник, если предположить, что он достаточно общий. Как я могу перед использованием артефакта проверить, является ли он банкой с несколькими выпусками.

Multi-Release: true

Я знаю, что можно вручную просмотреть MANIFEST.MF внутри META-INF jar для вышеуказанного атрибута, но есть ли для этого опция командной строки?

Может быть, я упускаю что-то уже существующее с каким-то другим именем или не вижу чего-то очень очевидного. Но я попытался найти такой вариант в jar и java также не увенчались успехом.


person Naman    schedule 10.10.2017    source источник
comment
Когда я искал способ заглянуть в манифест JAR, я тоже не нашел решения. Я думаю, что нет способа разархивировать.   -  person Nicolai Parlog    schedule 10.10.2017
comment
Николай прав, инструмент jar не предоставляет возможности быстро определить, является ли файл JAR файлом MR JAR. Самый простой — использовать jar --file=<file> --list и искать META-INF/версии в списке. Да, есть крайний случай, когда кто-то добавляет в манифест раздел версии без атрибута Multi-Release.   -  person Alan Bateman    schedule 10.10.2017


Ответы (1)


jar поддерживает только специальные операции с файлом манифеста во время создания и обновления. Вы можете обойтись этим:

unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true"

Помимо этого, JarFile включает следующий новый метод, который может быть полезен:

логический isMultiRelease (): Возвратите true, если этот файл JAR является файлом JAR с несколькими выпусками.

person neuhaus    schedule 10.10.2017
comment
Возможно, вам следует добавить, что это работает только в Linux. :) - person Nicolai Parlog; 10.10.2017