最新的nexus发布工件

时间:2018-06-21 18:22:43

标签: maven-2 nexus

我已经建立了一个Nexus存储库来存储我们构建的工件,第三方依赖项以及自制的共享源代码头。

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

使用wget时,本质上必须知道所需工件的确切版本-您必须明确知道最新的版本号。

是否有另一种方法可以从maven版本的nexus存储库中检索工件的最新版本,而实际上不知道版本号是什么?

如果有一种方法可以使用wget代替maven本身来实现,那将是理想的选择,因为我不想强迫用户安装apache maven只是为了从关系下载工件。

1 个答案:

答案 0 :(得分:0)

我认为您不能仅通过使用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。

希望这会有所帮助。

干杯。

Edu。