2017-10-10 21 views
3

これを私が持っていたinitial questionから分けて、十分に一般的であると仮定します。アーティファクトチェックが複数リリースのjarである場合、どのように使用するのですか?jarがマルチリリースであるかどうかを確認する方法

Multi-Release: true 

私は上記の属性の瓶のMETA-INFMANIFEST.MFに手動で探してその可能性を知っているが、このために利用可能なコマンドラインオプションはありますか?

多分私は何か他の名前で既に存在しているか、または非常に明白な何かを見逃しています。しかし、私はjarjavaツールでこのようなオプションを探してみました。

+0

JARマニフェストを調べる方法を探したところ、解決策も見つけられませんでした。私は[解凍](https://stackoverflow.com/a/46662468/2525313)の周りに方法がないと思う。 – Nicolai

+3

Nicolaiは正しいですが、 'jar'ツールはJARファイルがMR JARかどうかを素早く確認するためのオプションを提供していません。最も簡単な方法は 'jar --file = --list'を使い、リスト中のMETA-INF/versionsを探すことです。はい。誰かがマニフェストにMulti-Release属性のないバージョンセクションを追加するコーナーケースがあります。 –

答えて

4

jarは、作成および更新時にマニフェストファイルに対して特別な操作のみをサポートします。あなたこれをすることによって得ることができます。それ以外は

unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true" 

、するJarFileが有用である可能性があり、次の新しいメソッドが含まれています(isMultiRelease

はブール値):このJARファイルには、マルチリリースのJARあるときに真を返しますファイル。

+3

これはLinux上でのみ動作すると付け加えてください。 :) – Nicolai

+0

私が探しているものは正確にはありません。似たようなものとして、私は瓶の内容を横断することを知っているということを述べなければならなかった。 @Nicolaiが述べたように、これはJDK自体以外のツールにも依存している可能性があります。 – nullpointer

+1

私はそれが理想的な解決策ではないことを認識していますが、いくつかのシナリオではうまくいくでしょう。残念ながら、jarはSTDOUTにファイルを抽出できないと思います。 – neuhaus

関連する問題