muszę czytać MANIFEST.MF maven plik manifestu z „some.jar” za pomocą bashJak odczytać plik JAR MANIFEST.MF z użyciem Bash
Odpowiedz
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
będzie tłumić gadatliwe wyjście z programu unzip-c
wyodrębni standardowe wyjście
przykład:
$ 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
Alternatywnie można użyć -p
zamiast -q -c
.
-p wyodrębnić pliki do potoku (stdout). Nic, ale dane pliku są wysyłane na standardowe wyjście, a pliki są zawsze wyodrębniane w formacie binarnym, tak jak są przechowywane (bez konwersji).
Wiem, że ten wątek jest stary, ale dla kogo może to dotyczyć: Jak w instrukcji, wyodrębnianie za pomocą -p lub -c wydrukuje dane wyjściowe w postaci binarnej. Jeśli chcesz jakoś sparsować to wyjście (na przykład do tablicy asocjacyjnej), powinieneś wymusić reprezentację tekstową argumentem -aa, aby była poprawna. – tcigler
użycie unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
że będzie cicho (-q
) czytaj ścieżkę META-INF/MANIFEST.MF z jarfile (który jest skompresowany w formacie ZIP) na standardowe wyjście (-c
). Można wtedy rura wyjście do innego polecenia, aby odpowiedzieć na pytania typu „co jest główną klasą w tym słoiku:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(usuwa wszystkie wiersze, które nie zawierają ciąg Main-Class
, następnie rozdziela linię na :
, zachowując tylko drugie pole, nazwę klasy). Oczywiście, zdefiniuj odpowiednio $JARFILE_PATH
lub zamień $JARFILE_PATH
ścieżką do pliku jar, który cię interesuje.
W zależności od dystrybucji, zainstaluj pakiet unzip
. Następnie wystarczy wydać
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
Spowoduje to zrzucenie zawartości do STDOUT.
HTH
$ tar xfO some.jar META-INF/MANIFEST.MF
x
ekstrakty i O
przekierowania na standardowe.
Uwaga: Wydaje się, że działa tylko w bsdtar, a nie w GNU tar.
Inni publikowali o użyciu unzip -p i piping do grep, awk lub czegokolwiek, czego potrzebujesz. Chociaż działa to w większości przypadków, warto zauważyć, że ze względu na limit znaków MANIFEST.MF wynoszący 72 znaki na linię, możesz szukać kluczy, których wartości są podzielone na wiele wierszy i dlatego będą bardzo trudne do przeanalizowania. Chciałbym zobaczyć narzędzie CLI, które faktycznie może wyciągnąć renderowaną wartość z pliku.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
pliki jar są tylko pliki zip. –