【问题标题】:Latest nexus release artifact最新的 nexus 发布工件
【发布时间】:2018-12-01 04:24:30
【问题描述】:

我已经设置了一个 Nexus 存储库来存储我们构建的工件、第三方依赖项和自制的共享源代码标头。

我目前正在使用 wget 来检索第三方依赖项和共享源头文件,以便在构建我们的软件应用程序时使用(特定应用程序的源代码存储在单独的 git 存储库中)。

当您使用 wget 时,您基本上必须知道您想要的工件的确切版本 - 您必须明确知道最新版本号是什么。

是否有另一种方法可以在不知道版本号的情况下从 maven 发布 nexus 存储库中检索工件的最新版本?

如果有一种方法可以使用 wget 而不是 maven 本身来做到这一点,那将是理想的,因为我不想强迫用户安装 apache maven 只是为了从 nexus 下载工件。

【问题讨论】:

  • Nexus 有一个 REST API 来搜索工件。请参阅 Nexus 的文档(您使用哪个版本的 Nexus?)
  • 我正在使用 Nexus 3 OSS。

标签: maven-2 nexus


【解决方案1】:

我认为你不能只使用 curl 来做到这一点。你需要完成其他任务才能实现你想要的。

这是一种可能性:

您应该首先访问 maven 存储库元数据文件。 (您可以在此处找到文档:http://maven.apache.org/ref/3-LATEST/maven-repository-metadata/repository-metadata.html)

例如,假设您想从 maven Central 下载以下 maven 工件的最新版本:

groupId = javax
artifactId = javaee-api

下载以下文件:

http://central.maven.org/maven2/javax/javaee-api/maven-metadata.xml

它的内容会是这样的:

<metadata>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <versioning>
        <latest>8.0</latest>
        <release>8.0</release>
        <versions>
            <version>7.0</version>
            <version>8.0</version>
        </versions>
        <lastUpdated>20170915063942</lastUpdated>
    </versioning>
</metadata>

然后您将需要访问最新标签以检索最新版本。

文档中关于最新或发布标签的含义如下:

latest  String  What the latest version in the directory is, including snapshots
release String  What the latest version in the directory is, of the releases only

你应该也可以在 nexus 存储库中找到这个文件,并且你应该使用类似 xmllint 的东西来获得你想要的值。例如:

curl http://central.maven.org/maven2/jx/javaee-api/maven-metadata.xml \
| xmllint --xpath "/metadata/versioning/latest/text()" -

或

curl http://central.maven.org/maven2/jx/javaee-api/maven-metadata.xml \
| xmllint --xpath "/metadata/versioning/release/text()" -

具体取决于你想要什么。

之后,您可以使用版本信息来组成您要下载的工件的完整 URL。

希望这会有所帮助。

干杯。

教育。

【讨论】:

    猜你喜欢
    • 2018-06-04
    • 2011-12-06
    • 1970-01-01
    • 2015-03-07
    • 2021-10-12
    • 2011-07-03
    • 2018-12-01
    • 2012-06-17
    • 2017-06-28
    相关资源
    最近更新 更多