如何检查一个罐子是否是多版本
从我的initial question中分离出来,假设这是足够通用的。如何在使用工件检查之前如果它是多版本的jar。如何检查一个罐子是否是多版本
Multi-Release: true
我知道它可以手动寻找到罐子的上述属性的META-INF
内MANIFEST.MF
,但有一个命令行选项可用于此?
也许我错过了一些已经存在的一些其他名字或盲目的事情非常明显。但我试过在jar
和 java
工具中寻找这样一个选项,也没有成功。
jar只在创建和更新过程中支持清单文件的特殊操作。您可以使用此度日:
unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true"
除此之外,jar文件包括以下新的方法,可能是有用的:)
布尔isMultiRelease(:返回true,当这个JAR文件是一个多版本JAR文件。
也许你应该补充说这只适用于Linux。 :) – Nicolai
不是我正在寻找什么。至于类似的问题,我不得不在提到的问题中提及遍历jar内容。同样如@Nicolai所说,这可能很好地依赖于JDK本身之外的工具。 – nullpointer
我意识到这不是一个理想的解决方案,但它适用于某些场景。不幸的是,我认为jar无法将文件提取到STDOUT。 – neuhaus
当我寻找一种窥探JARs清单的方法时,我也没有发现任何解决方案。我认为没有办法[解压缩](https://stackoverflow.com/a/46662468/2525313)。 – Nicolai
Nicolai是正确的,'jar'工具不提供快速查看JAR文件是否为MR JAR的选项。最简单的方法是使用'jar --file = --list'并在列表中查找META-INF /版本。是的,在某些情况下,有人会在清单中添加没有Multi-Release属性的版本部分。 –