【问题标题】:OSS Nexus: how to use REST API to retrieve last version as a textOSS Nexus:如何使用 REST API 以文本形式检索最新版本
【发布时间】:2012-08-26 00:54:31
【问题描述】:

我想检索最新版本名称(作为文本),以便能够重命名从 Nexus 检索到的具有时间戳的工件。

我所做的是创建一个包含内部 jar 项目、依赖项、相关脚本的多个存档的存档...但是如果打包的 jar 是快照,则存档在下载时会带有时间戳。这些时间戳替换存档的 X.X.X-SNAPSHOT 扩展名,我无法制作任何自动化脚本来执行某些任务,例如提取存档、重命名目录、创建一些符号链接……

我在其余的 api 文档中没有找到与此相关的任何内容。有没有一种简单的方法可以使用其余的 api 或某种脚本来做到这一点?

谢谢。

编辑:

从下面的答案中,我设法使用 LATEST 而不是版本名称来检索最新的快照版本:

然后使用脚本我可以检索基本版本。

#!/bin/bash
VERSION=`curl --silent "http://redmine.saic.int:8081/nexus/service/local/artifact/maven/resolve?r=snapshots&g=com.g2mobility&a=G2-Modem-Mgr&v=LATEST&c=executable&e=tar.gz" | sed -n 's|<baseVersion>\(.*\)</baseVersion>|\1|p'`

VERSION=`echo "$VERSION" | tr -d ' '`

echo "Version is $VERSION"

谢谢!

【问题讨论】:

    标签: rest timestamp nexus


    【解决方案1】:

    Nexus 有以下 REST API 用于描述如何解析 Maven 模块:

    示例

    获取以下工件的详细信息:

    <groupId>org.cometd.jetty</groupId>
    <artifactId>cometd-jetty-client</artifactId>
    <version>1.0-SNAPSHOT</version>
    

    使用以下 REST API:

    https://oss.sonatype.org/service/local/artifact/maven/resolve?r=cometd-snapshots&g=org.cometd.jetty&a=cometd-jetty-client&v=1.0-SNAPSHOT&e=jar

    返回以下报告:

    <artifact-resolution>
      <data>
        <presentLocally>true</presentLocally>
        <groupId>org.cometd.jetty</groupId>
        <artifactId>cometd-jetty-client</artifactId>
        <version>1.0-20090313.100344-2</version>
        <baseVersion>1.0-SNAPSHOT</baseVersion>
        <extension>jar</extension>
        <snapshot>true</snapshot>
        <snapshotBuildNumber>2</snapshotBuildNumber>
        <snapshotTimeStamp>1236938624000</snapshotTimeStamp>
        <sha1>0cbf7163f19bf4586e27632a1f742dd0c0e0036d</sha1>
        <repositoryPath>/org/cometd/jetty/cometd-jetty-client/1.0-SNAPSHOT/cometd-jetty-client-1.0-20090313.100344-2.jar</repositoryPath>
      </data>
    </artifact-resolution>
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 嗨,没有 Nexus 插件可以做到这一点吗?谢谢
      【解决方案3】:

      这是一个较早删除的帖子,提出了一种从 Maven 存储库内容组装发行版的替代方法:

      Ivy 是另一种依赖管理客户端,可以从command-line 运行,如下所示:

      java -jar ivy.jar -settings ivysettings.xml -dependency org.cometd.jetty cometd-jetty-client 1.0-SNAPSHOT -retrieve "distrib/[artifact]-[revision](-[classifier]).[ext]"
      

      ivy 命令的 retrieve 选项详细说明了下载的文件应如何存储在本地:

      -- distrib
         |-- cometd-api-1.0-SNAPSHOT.jar
         |-- cometd-jetty-client-1.0-SNAPSHOT.jar
         |-- cometd-jetty-client-1.0-SNAPSHOT-javadoc.jar
         |-- cometd-jetty-client-1.0-SNAPSHOT-sources.jar
         |-- cometd-jetty-server-1.0-SNAPSHOT.jar
         |-- jetty-6.1.15.jar
         |-- jetty-client-6.1.15.jar
         |-- jetty-sslengine-6.1.15.jar
         |-- jetty-util5-6.1.15.jar
         |-- jetty-util-6.1.15.jar
         `-- servlet-api-2.5-20081211.jar
      

      检索到正确的带时间戳的工件,但保留了“SNAPSHOT”修订号,据我了解,您正在尝试这样做。

      ivysettings 文件详细说明了下载工件时要使用的存储库:

      <ivysettings>
          <settings defaultResolver="repos"/>
          <resolvers>
              <chain name="repos">
                  <ibiblio name="central" m2compatible="true"/>
                  <ibiblio name="cometd-snapshot" root="https://oss.sonatype.org/content/repositories/cometd-snapshots/" m2compatible="true"/>
              </chain>
          </resolvers>
      </ivysettings>
      

      【讨论】:

      • 这就是我想要做的,但我们正在使用 maven,不想移动到另一个依赖项管理器。
      猜你喜欢
      • 2017-06-28
      • 2013-07-21
      • 1970-01-01
      • 2014-01-28
      • 2013-01-24
      • 2023-03-23
      • 2011-12-16
      • 1970-01-01
      • 2020-09-23
      相关资源
      最近更新 更多