Bashを使用して「some.jar」からMANIFEST.MF mavenマニフェストファイルを読み取る必要があります
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
は、unzipプログラムからの詳細な出力を抑制します-c
は標準出力に抽出されます例:
$ 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
または、-p
の代わりに-q -c
を使用できます。
-pパイプにファイルを抽出(stdout)。ファイルデータ以外は何もstdoutに送信されず、ファイルは常に格納されている(変換なし)ので、常にバイナリ形式で抽出されます。
unzip
を使用:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
静かに(-q
)jarファイル(Zip形式で圧縮されている)からstdout(-c
)へのパスMETA-INF/MANIFEST.MFを読み取ります。その後、出力を他のコマンドにパイプして、「このjarのメインクラスは何か」などの質問に答えることができます。
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(これは、文字列Main-Class
を含まないすべての行を削除し、:
で行を分割し、2番目のフィールドであるクラス名のみを保持します)。もちろん、$JARFILE_PATH
を適切に定義するか、$JARFILE_PATH
を目的のjarfileへのパスに置き換えます。
ディストリビューションに応じて、unzip
パッケージをインストールします。次に、単に発行する
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
これにより、内容がSTDOUTにダンプされます。
HTH
他の人は、unzip -pを使用してgrepやawkなどのパイピングを必要としていることを投稿しています。これはほとんどの場合に機能しますが、MANIFEST.MFの1行あたりの文字数が72文字に制限されているため、値が複数の行に分割されているために解析が非常に難しいことに注意してください。実際にレンダリングされた値をファイルから引き出すことができるCLIツールが見たいです。
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
$ tar xfO some.jar META-INF/MANIFEST.MF
x
は抽出し、O
はstdoutにリダイレクトします。
注:bsdtarでのみ動作し、GNU tar。