jar 文件的版本,通过使用 powershell 读取其清单
Posted
技术标签:
【中文标题】jar 文件的版本,通过使用 powershell 读取其清单【英文标题】:Version of jar file by reading its manifest using powershell 【发布时间】:2019-01-09 17:50:47 【问题描述】:我正在运行一个 powershell 脚本来识别版本。对于 DLL 和 EXE,使用以下函数获取版本。我还有其他一些扩展名为 .Jar 的文件。有没有办法可以使用 powershell 打开 jar 并从它们的清单中获取它的版本。
请告诉我。
@n='版本';e=$_.versioninfo.Fileversion
【问题讨论】:
嗨。我下面的回答有帮助吗? 我会试一试告诉你 【参考方案1】:看起来你必须先从 jar 文件中提取。我下载了java并使用我也下载的jar文件测试了自己
& "C:\Program Files\Java\jdk1.8.0_191\bin\jar.exe" xvf junit-4.10.jar META-INF/MANIFEST.MF
get-content .\META-INF\MANIFEST.MF
结果
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_26-b03-384-10M3425 (Apple Inc.)
话虽如此,请在此处阅读Do we want single, complete answers?,其中提到了实施版本,因此请确保您知道版本的位置以及是否可以依赖它。
【讨论】:
谢谢。我会试一试告诉你 我的回答对你有帮助吗?【参考方案2】:这在 Server 2016/PS 5.1 和 Win 10/PS 7.1 上用作 PowerShell 脚本,无需安装任何额外内容。它读取 zip 存档中的 MANIFEST.MF 文件并写入标准输出。这是在这里找到的选项 4:https://***.com/a/37561878/101151
确保将绝对路径传递给 [io.compression.zipfile]::OpenRead。它似乎绑定到它运行的第一个目录,并将其重新用于相对路径。
# Read the MANIFEST.MF from a Java .JAR (really a .zip) file and output to standard output
param(
[Parameter(Mandatory=$true)][string]$jarname
)
# The following code is based on an answer at https://***.com/a/37561878/101151
Add-Type -assembly "system.io.compression.filesystem"
$zip = [io.compression.zipfile]::OpenRead((Get-ChildItem $jarname).FullName)
$file = $zip.Entries | where-object $_.Name -eq "MANIFEST.MF"
$stream = $file.Open()
$reader = New-Object IO.StreamReader($stream)
$text = $reader.ReadToEnd()
$text
$reader.Close()
$stream.Close()
$zip.Dispose()
【讨论】:
以上是关于jar 文件的版本,通过使用 powershell 读取其清单的主要内容,如果未能解决你的问题,请参考以下文章
powershell 使用PowerShell在Maven Central上查找Jars
powershell 使用PowerShell在Maven Central上查找Jars
我想通过反射使用 MySQL,但不得不对 MySQL jar 文件进行硬编码——我可以从 Maven 下载最新版本吗?