bash jar manifest.mf

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).