2013-04-02 92 views
0

我在我的目录许多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 $对提取名称和版本有效吗?

回答

1

在JAR文件名中的版本号仅仅是一个惯例和Maven的构建JAR文件的缺省值。它可能已被覆盖,从文件名中读取版本号并不总是可靠的。

从JAR中读取版本号的更可靠方法是查看JAR文件。在这里,你已经取决于JAR是如何构建的几个选项:

  • 看看META-INF/maven/.../pom.properiespom.xml并读取该版本 - 这应该是目前对Maven构建的二进制文件,如果
  • 有时版本号目前在META-INF/MANIFEST.MF下Specification-VersionImplementation-Version性质

如果失败,然后回落,从JAR名阅读版本号,因为没有可用的其它信息。

0

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

如果使用Maven,您可以使用finalNamepom.xml配置选项配置构建的工件的最终名称。 Maven文档提供了很好的introduction到pom结构。下面是从文档的例子:

<build> 
    ... 
    <finalName>${artifactId}-${version}</finalName> 
    ... 
</build> 
相关问题