J'ai besoin de lire le fichier manifeste MANIFEST.MF maven depuis "some.jar" en utilisant bash
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
supprimera la sortie détaillée du programme de décompression-c
va extraire vers stdoutExemple:
$ 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
Vous pouvez également utiliser -p
au lieu de -q -c
.
- p extraire les fichiers vers le tube (stdout). Rien que les données du fichier sont envoyées à stdout, et les fichiers sont toujours extraits au format binaire, tout comme ils sont stockés (pas de conversions).
utilisez unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
qui va tranquillement (-q
) lire le chemin META-INF/MANIFEST.MF du fichier jar (qui est compressé au format Zip) vers stdout (-c
). Vous pouvez ensuite diriger la sortie vers une autre commande pour répondre à des questions telles que "quelle est la classe principale de ce pot:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(cela supprime toutes les lignes qui ne contiennent pas la chaîne Main-Class
, puis divise la ligne en :
, en ne gardant que le deuxième champ, le nom de la classe). Bien sûr, définissez $JARFILE_PATH
de manière appropriée ou remplacer $JARFILE_PATH
avec le chemin vers un fichier jar qui vous intéresse.
Selon votre distribution, installez le package unzip
. Ensuite, lancez simplement
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
Cela videra le contenu sur STDOUT.
HTH
D'autres ont posté sur l'utilisation de la décompression -p et de la tuyauterie pour grep ou awk ou tout ce dont vous avez besoin. Bien que cela fonctionne dans la plupart des cas, il convient de noter qu'en raison de la limite de 72 caractères par ligne de MANIFEST.MF, vous pouvez rechercher des clés dont les valeurs sont réparties sur plusieurs lignes et seront donc très difficiles à analyser. J'adorerais voir un outil CLI qui peut réellement extraire une valeur rendue du fichier.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
$ tar xfO some.jar META-INF/MANIFEST.MF
x
extrait et O
redirige vers stdout.
Remarque: Semble fonctionner uniquement dans bsdtar, pas GNU tar.