Cómo leer el archivo MANIFEST.MF desde JAR usando Bash
(5)
Necesito leer MANIFEST.MF maven manifest file de "some.jar" usando bash
Dependiendo de su distribución, instale el paquete unzip
. Entonces simplemente publica
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
Esto arrojará los contenidos a STDOUT.
HTH
Otros han estado publicando sobre usar unzip -p y piping para grep o awk o lo que sea que necesites. Si bien eso funciona en la mayoría de los casos, vale la pena señalar que, debido al límite de 72 caracteres por línea de MANIFEST.MF, es posible que esté reemplazando las claves cuyos valores están divididos en varias líneas y, por lo tanto, será muy difícil de analizar. Me encantaría ver una herramienta CLI que realmente pueda extraer un valor representado del archivo.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
use unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
que silenciosamente ( -q
) leerá la ruta META-INF / MANIFEST.MF del archivo jar (que se comprime usando el formato zip) para stdout ( -c
). A continuación, puede canalizar la salida a otro comando para responder preguntas como ''¿cuál es la clase principal de este contenedor?
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep ''Main-Class'' | cut -d '':'' -f 2
(esto elimina todas las líneas que no contienen la cadena Main-Class
, luego divide la línea en :
manteniendo solo el segundo campo, el nombre de la clase). Por supuesto, defina $JARFILE_PATH
adecuada o reemplace $JARFILE_PATH
con la ruta a un archivo jar que le interese.
$ tar xfO some.jar META-INF/MANIFEST.MF
x
extractos y O
redirige a stdout.
Nota: Parece que solo funciona en bsdtar, no en GNU tar.
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-
-q
suprimirá la salida detallada del programa de descompresión -
-c
extraerá a stdout
Ejemplo:
$ 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
Alternativamente, puede usar -p
lugar de -q -c
.
-p extraer archivos a canalizar (stdout). Nada más que los datos del archivo se envían a stdout, y los archivos siempre se extraen en formato binario, tal como se almacenan (sin conversiones).