Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从字符串库名称中获取jar库名称和版本?_Java_Maven_Jar - Fatal编程技术网

Java 如何从字符串库名称中获取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

我的目录中有许多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*(?:-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
    pom.xml
    并从中读取版本-这应该是maven构建的二进制文件的版本
  • 有时,META-INF/MANIFEST.MF中
    规范版本
    实现版本
    属性下的版本号
如果失败,那么返回到从JAR名称读取版本号,因为没有其他可用信息