首页 > 解决方案 > 用于从工件读取最新版本的 Shell 脚本

问题描述

在我的工件中有一个文件"maven-metadata.xml",其中包含所有版本。我想从此文件中获取最新版本。但问题是我想要一个稳定的版本。例如在这个 maven-metadata.xml 文件中:

<metadata>
<groupId>com.platform</groupId>
<artifactId>abc1.2</artifactId>
  <versioning>
    <latest>2.6.0-425-75b5083</latest>
    <release>2.6.0-425-75b5083</release>
    <versions>
      <version>2.5.0-132-b616a37</version>
      <version>2.5.1-RC1</version>
      <version>2.5.2</version>
      <version>2.6.0-425-75b5083</version>
    </versions>
    <lastUpdated>20201011113748</lastUpdated>
 </versioning>
</metadata>

但我想获取最新的稳定版本(没有字母数字),即 2.5.2 如何在 shell 脚本中过滤这些数据?

我也不能直接读取<latest>标签,因为它可能包含字母数字版本。

标签: bashshellshartifactory

解决方案


假设版本按升序排序,您可以使用以下命令提取不带字母数字的最新版本。

sed -n 's/.*<version>\([0-9.]*\)<\/version>.*/\1/p' maven-metadata.xml | tail -n 1

推荐阅读