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

标签 java maven jar

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

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

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

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

最佳答案

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

从 JAR 读取版本号的更可靠方法是查看 JAR 文件内部。这里有几个选项,具体取决于 JAR 的构建方式:

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

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

关于java - 如何从String库名称获取jar库名称和版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770058/

相关文章:

java - <form :errors> tag in my Spring 3. 0.3 web MVC 应用程序未呈现验证错误

Java - Try/catch 方法问题

java - 我可以将 Eclipse 项目配置为在修改 jar 后重建吗?

java - 在 NetBeans IDE7.4 中打包 Java 项目出现错误

java - 将自定义类型的列表转换为对象框中的字符串

spring - 找不到 pom.xml 文件 - Heroku

maven - 在jenkins中构建docker容器内部

java - 没有使用 Hibernate API 为该名称定义查询

java - 如何在其他计算机上运行java可执行文件

Java:导出到 JAR 后路径名不起作用