Java 如何从字符串库名称中获取jar库名称和版本?
我的目录中有许多jar文件:Java 如何从字符串库名称中获取jar库名称和版本?,java,maven,jar,Java,Maven,Jar,我的目录中有许多jar文件: some-lib-2.0.jar some-lib-2.1-SNAPSHOT.jar some-lib-3.RELEASE.jar some-lib-R8.jar some-lib-core-1.jar some-lib-2.patch2.jar some-lib-2-alpha-4.jar some-lib.jar some-lib2-4.0.jar 如何从文件名中获取库名和版本 regex((?:(?!-\d)\S)+(\S*\d\S*(?:-SNAPSHO
- some-lib-2.0.jar
- some-lib-2.1-SNAPSHOT.jar
- some-lib-3.RELEASE.jar
- some-lib-R8.jar
- some-lib-core-1.jar
- some-lib-2.patch2.jar
- some-lib-2-alpha-4.jar
- some-lib.jar
- some-lib2-4.0.jar
regex((?:(?!-\d)\S)+(\S*\d\S*(?:-SNAPSHOT)?).jar$对提取名称和版本有效吗?命名策略在不同的库中可能不同,因此您无法使用一个规则从包名称提取名称/版本,有关详细信息,请查看项目文档 对于Maven,您可以使用
finalName
pom.xml
配置选项配置构建工件的最终名称。Maven文档提供了良好的pom结构。以下是文档中的示例:
<build>
...
<finalName>${artifactId}-${version}</finalName>
...
</build>
...
${artifactId}-${version}
...
JAR文件名中的版本号只是一种约定,是Maven构建的JAR的默认值。它可能已被覆盖,仅从文件名读取版本号并不总是可靠的
从JAR中读取版本号的更可靠的方法是查看JAR文件内部。根据JAR的构建方式,这里有几个选项:
- 查看
和META-INF/maven/../pom.properies
并从中读取版本-这应该是maven构建的二进制文件的版本pom.xml
- 有时,META-INF/MANIFEST.MF中
或规范版本
属性下的版本号实现版本