0

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

  • 一些-lib-2.0.jar
  • 一些-lib-2.1-SNAPSHOT.jar
  • some-lib-3.RELEASE.jar
  • 一些-lib-R8.jar
  • 一些-lib-core-1.jar
  • 一些-lib-2.patch2.jar
  • some-lib-2-alpha-4.jar
  • 一些lib.jar
  • 一些-lib2-4.0.jar

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

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

4

2 回答 2

1

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

从 JAR 读取版本号的更可靠方法是查看 JAR 文件内部。根据 JAR 的构建方式,您有几个选项:

  • 查看META-INF/maven/.../pom.properiespom.xml从中读取版本 - 这应该存在于 Maven 构建的二进制文件中
  • 有时版本号(如果存在于 META-INF/MANIFEST.MFSpecification-VersionImplementation-Version属性下)

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

于 2013-04-02T19:09:39.093 回答
0

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

在 Maven 的情况下,您可以使用finalName pom.xml配置选项配置构建工件的最终名称。Maven 文档很好地介绍了 pom 结构。以下是文档中的示例:

<build>
    ...
    <finalName>${artifactId}-${version}</finalName>
    ...
</build>
于 2013-04-02T18:15:23.117 回答