Мне нужно прочитать файл манифест MANIFEST.MF maven из "some.jar", используя bash
Как читать файл MANIFEST.MF из JAR с помощью Bash
Ответ 1
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-
-q
будет подавлять подробный вывод из программы unzip -
-c
будет извлечен в stdout
Пример:
$ 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 извлеките файлы в pipe (stdout). Ничего, кроме данных файла, не отправляется на stdout, и файлы всегда извлекаются в двоичном формате, точно так же, как они хранятся (без конверсий).
Ответ 2
используйте unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
который спокойно (-q
) прочитает путь META-INF/MANIFEST.MF из jarfile (который сжимается с использованием формата zip) в stdout (-c
). Затем вы можете передать вывод в другую команду, чтобы ответить на такие вопросы, как "что является основным классом для этой банки:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(это удаляет все строки, которые не содержат строку Main-Class
, а затем разбивает строку на :
, сохраняя только второе поле, имя класса). Конечно, либо определите $JARFILE_PATH
соответствующим образом, либо замените $JARFILE_PATH
на путь к интересующему jarfile.
Ответ 3
В зависимости от вашего дистрибутива установите пакет unzip
. Затем просто выпустите
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
Это приведет к сбросу содержимого в STDOUT.
НТН
Ответ 4
$ tar xfO some.jar META-INF/MANIFEST.MF
x
выдержки и O
перенаправляет на stdout.
Примечание. Похоже, работать только в bsdtar, а не в GNU tar.
Ответ 5
Другие публиковали об использовании unzip -p и piping для grep или awk или того, что вам нужно. Хотя это работает в большинстве случаев, стоит отметить, что из-за лимита в 72 символа на строку MANIFEST.MF вы можете быть grepping для ключей, значения которых разделены на несколько строк и поэтому очень сложно разобрать. Мне бы хотелось увидеть инструмент CLI, который может фактически вывести отображаемое значение из файла.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html