从 Maven 生成的 Jar 中提取 artifactId 和版本号

Posted

技术标签:

【中文标题】从 Maven 生成的 Jar 中提取 artifactId 和版本号【英文标题】:Extract artifactId and version number from Maven-generated Jar 【发布时间】:2020-04-08 22:22:12 【问题描述】:

如果有一堆 Maven 创建的 Jar 文件。它们的名称包括 artifactId 和版本号。我想从 Jar 文件名中提取 artifactId 和版本号。然而,事实证明这远非易事。我有诸如qpid-broker-plugins-amqp-0-8-protocol-7.0.6.jar 之类的文件名,其中有两个部分看起来像一个版本号(0-87.0.6),但只有后者是版本号。然后是adminpages-4.11.0-beta-20191212-150315-7eec2eb4c.jar,其中4.11.0-beta-20191212-150315-7eec2eb4c 是版本。因此我的问题是是否有一种安全可靠的方法从 Jar 文件名中提取版本号?

【问题讨论】:

您能否详细解释一下您要解决的问题类型? 我想列出 Web 应用程序中使用的库。我扫描 WEB-INF/lib 文件夹,然后需要从文件名中提取名称和版本作为单独的部分。但似乎没有通用的方法可以在所有情况下都做到这一点。 【参考方案1】:

没有。

文件名通常采用以下格式

artifactId-version-classifier.extension

如果分类器不为空,否则

artifactId-version.extension

所有三个元素(artifactIdversionclassifier)都可以是任意字符串。

如果您需要找到给定 jar 的坐标,还有其他更可靠的方法。

【讨论】:

以上是关于从 Maven 生成的 Jar 中提取 artifactId 和版本号的主要内容,如果未能解决你的问题,请参考以下文章

maven笔记-将本地jar包打包进可执行jar中

IDEA 热部署 + 下载jar包放到maven中

如何把jar包生成maven工程

maven之排除冲突jar包

使用 Maven 从开源项目生成 JAR,供对 Maven 一无所知的人使用

maven工程编译并生成可执行JAR包命令