Как прочитать файл MANIFEST.MF из JAR с помощью Bash - PullRequest
73 голосов
/ 15 августа 2011

Мне нужно прочитать файл манифеста maven MANIFEST.MF из "some.jar", используя bash

Ответы [ 5 ]

136 голосов
/ 15 августа 2011
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
  • -q подавит подробный вывод из программы распаковки
  • -c извлечет в стандартный вывод

Пример:

$ unzip -q -c commons-lang-2.4.jar META-INF/MANIFEST.MF

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_13-119 (Apple Inc.)
Package: org.apache.commons.lang
Extension-Name: commons-lang
Specification-Version: 2.4
Specification-Vendor: Apache Software Foundation
Specification-Title: Commons Lang
Implementation-Version: 2.4
Implementation-Vendor: Apache Software Foundation
Implementation-Title: Commons Lang
Implementation-Vendor-Id: org.apache
X-Compile-Source-JDK: 1.3
X-Compile-Target-JDK: 1.2

В качестве альтернативы вы можете использовать -p вместо -q -c.

-p извлекать файлы в конвейер (стандартный вывод).Только данные файла отправляются на стандартный вывод, и файлы всегда извлекаются в двоичном формате, так же, как они хранятся (без преобразований).

16 голосов
/ 15 августа 2011

использование unzip:

$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF

, который будет тихо (-q) читать путь META-INF / MANIFEST.MF из jarfile (который сжат с использованием формата zip) в стандартный вывод (-c). Затем вы можете перенаправить вывод в другую команду, чтобы ответить на вопросы типа «что является основным классом для этого jar-файла:

$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2

(это удаляет все строки, которые не содержат строку Main-Class, затем разбивает строку на :, сохраняя только второе поле, имя класса). Конечно, либо определите $JARFILE_PATH соответствующим образом, либо замените $JARFILE_PATH на путь к интересующему вас файлу.

4 голосов
/ 15 августа 2011

В зависимости от дистрибутива установите пакет unzip.Затем просто выполните команду

unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF

. Это сбросит содержимое в STDOUT.

HTH

1 голос
/ 27 июня 2015

Другие публиковали сообщения об использовании unzip -p и piping для grep или awk или всего, что вам нужно.Хотя это работает в большинстве случаев, стоит отметить, что из-за ограничения в 72 символа на строку в файле MANIFEST.MF вы можете использовать ключи, значения которых разбиты на несколько строк, и, следовательно, их будет очень сложно проанализировать.Я хотел бы видеть инструмент CLI, который может фактически извлечь отображаемое значение из файла.

http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html

1 голос
/ 09 июня 2015

$ tar xfO some.jar META-INF/MANIFEST.MF

x извлекает и O перенаправляет на стандартный вывод.

Примечание: похоже, работает только в bsdtar, а не в GNU tar.

...