J'ai besoin de lire le fichier manifeste MANIFEST.MF maven de "some.jar" à l'aide de bash
Réponses
Trop de publicités?$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-
-q
supprimer documenté à partir de la décompression programme -
-c
extrait de stdout
Exemple:
$ 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
Alternativement, vous pouvez utiliser -p
au lieu de -q -c
.
-p extraire des fichiers à la pipe (stdout). Rien de mais le fichier de données est envoyé vers la sortie standard, et les fichiers sont toujours extraits en format binaire, tout comme ils sont stockés (pas de conversions).
utiliser unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
que va tranquillement (-q
) lire le chemin META-INF/MANIFEST.MF de la jarfiles (qui est compressé en utilisant le format zip) sur la sortie standard (-c
). Vous pouvez rediriger la sortie vers une autre commande pour répondre à des questions comme " quelle est la classe principale pour 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 de caractères Main-Class
, puis divise la ligne en :
, ne gardant que le deuxième champ, le nom de la classe). Bien sûr, soit définir $JARFILE_PATH
de façon appropriée ou de remplacer $JARFILE_PATH
avec le chemin d'accès à un jarfiles qui vous intéresse.