jarファイルからmanifest.mfファイルを取得し、内容を適切に表示するツールはありますか?
特に、OSGiバンドルを使用する場合、Export-PackageおよびImport-Packageエントリは非常に大きくなり、何が起こっているのかを正確に把握するのが困難になる可能性があります。この単純なキーワードに追加されたテキスト検索は、改行のために100%信頼できるわけではありません。
BND ツール用の Eclipse プラグインは、かなりうまく機能すると思います。jar ファイルを表示するためのエディターがあります。
以下はマニフェスト ファイル用のオンラインのプリティ プリンターで、オプションで並べ替えが可能です。
bnd 自体はコマンド ラインから実行でき、すべての詳細を出力します。
java -jar biz.aQute.bnd.run.jar xx.jar
bndtools で jar をクリックして印刷タブを選択することもできます。これにより、おそらく必要以上の詳細が得られます。
bnd はhttps://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/biz.aQute.bnd/biz.aQute.bnd-latest.jarからダウンロードできます。
コマンドに関する情報については、bnd help と入力してください。
Maven Central から bnd.jar をダウンロードしました。
http://repo1.maven.org/maven2/biz/aQute/bnd/bnd/2.2.0/bnd-2.2.0.jar
はい、実行できます。マニフェストがきれいに出力されます。
java -jar bnd-2.2.0.jar example.jar
print コマンドは、Import-Package と Export-Package をさらに適切に表示します。
java -jar bnd-2.2.0.jar print example.jar
javascript で解析してください ;) OSGi MANIFEST.MF ファイルをプリティプリントするためのJSFiddleを次に示します。
http://jsfiddle.net/scotch/5WJwd/embedded/result/
var sectionsText = text.split(/\n\n\n/),
sections = {},
sectionText,
name,
body,
packagesText,
packages,
packageName,
packageBody;
for (var i in sectionsText) {
sectionText = sectionsText[i];
name = sectionText.substr(0, sectionText.indexOf(": "));
body = sectionText.substr(sectionText.indexOf(": ") + 2);
sections[name] = body;
if (name.indexOf("Package") != -1) {
body = body.replace(/[\n\r] /g, '');
body = body.replace(/(,)(?=(?:[^"]|"[^"]*")*$)/g, "$1\n");
packagesText = body.split(/\n/);
packages = {};
for (var i in packagesText) {
packageBody = packagesText[i];
packageName = packageBody.substr(0, packageBody.indexOf(";"));
packageBody = packageBody.substr(packageBody.indexOf(";")+1);
if (collapse) {
packageBody = packageBody.replace(/uses:="[^"]*"/g, 'uses:="..."');
}
packages[packageName] = packageBody;//.replace(/;/g, ';\n');
}
sections[name] = packages;
}
}
エントリもアルファベット順にソートされるため、比較することができます。誰か (特に Eclipse 以外で開発している人々) にとって役立つことを願っています。
Eclipse を使用している場合は、によって構成された Plugin Manifest Editor を使用できます。