如何从String库名称获取jar库名称和版本?

时间:2013-04-02 17:06:46

标签: java maven jar

我的目录中有很多jar文件:

  • 一些-LIB-2.0.jar
  • 一些-LIB-2.1-SNAPSHOT.jar
  • 一些-LIB-3.RELEASE.jar
  • 一些-LIB-R8.jar
  • 一些-LIB-芯1.jar
  • 一些-LIB-2.patch2.jar
  • 一些-LIB-2-α-4.jar
  • 一些-lib.jar
  • 一些-lib2-4.0.jar

如何从文件名中获取库名称和版本?

是正则表达式((?:(?! - \ d)\ S)+) - (\ S * \ d \ S *(?: - SNAPSHOT)?)。jar $对提取名称和版本有效吗? / p>

2 个答案:

答案 0 :(得分:1)

JAR文件名中的版本号仅仅是Maven构建的JAR的约定和默认值。它可能已被覆盖,并且从文件名中读取版本号并不总是可靠的。

从JAR读取版本号的更可靠方法是查看JAR文件。根据JAR的构建方式,您可以在这里选择几个选项:

  • 查看META-INF/maven/.../pom.properiespom.xml并阅读其中的版本 - 这应该适用于Maven构建的二进制文件
  • 有时版本号如果存在于Specification-VersionImplementation-Version属性下的META-INF / MANIFEST.MF

如果失败,则返回读取JAR名称的版本号,因为没有其他可用信息。

答案 1 :(得分:0)

不同库的命名策略可能不同,因此您无法使用一个规则从包名称中提取名称/版本,有关详细信息,请查看项目文档。

如果是Maven,您可以使用finalName pom.xml配置选项配置构建工件的最终名称。 Maven docs为pom结构提供了很好的introduction。以下是docs的示例:

<build>
    ...
    <finalName>${artifactId}-${version}</finalName>
    ...
</build>