jarコマンドでマニフェストファイルだけ取り出す

普段何気に利用しているjarのバージョンが気になって
マニフェストファイルを確認しようと思ったら意外と面倒で
簡単に実現できる方法はないか色々と試してみました。
結論としては以下のコマンドでマニフェストファイルだけ抽出できますね。
「xオプション+対象ファイル指定」がポイントです。


jar xf hoge.jar META-INF/MANIFEST.MF


意外と「xオプション+対象ファイル指定」の使用例を見かけなかったので
いくつか試してみました。


hoge.jar
  │
  └─frist
     ├──hoge1st.class
     │
     └──second
          ├──hoge2nd.class
          ├──fuga2nd.class
          │
          └──third
               ├──hoge3rd.class
               └──fuga3rd.class


上記のようなパッケージ構成のjarにおいて

jar xf hoge.jar first/Hoge1st.class

を実行するとfirstフォルダとその直下にHoge1st.classが出力されます。

ちなみに以下の場合だとthirdパッケージも含めてsecond以下が全て出力されます。

jar xf hoge.jar first/second


残念ながら、任意のパッケージ以下のクラスのみを出力する
というのはどうも出来ないようです。
上記の構成でいうとsecondパッケージ以下のクラスのみを
出力するといったケースです。