我的目录中有很多 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.properies
和pom.xml
并从中读取版本 - 这应该存在于 Maven 中 -构建的二进制文件 - 有时版本号(如果存在于
Specification-Version
或Implementation-Version
属性下的 META-INF/MANIFEST.MF
如果失败,则回退到从 JAR 名称读取版本号,因为没有其他可用信息。
关于java - 如何从String库名称获取jar库名称和版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770058/