如何从 Maven 存储库中找到最新版本的工件

Posted

技术标签:

【中文标题】如何从 Maven 存储库中找到最新版本的工件【英文标题】:How do I find the latest version of an artifact from a maven repository 【发布时间】:2010-11-15 00:22:32 【问题描述】:

作为自动化部署的一部分,我需要一个脚本来从我们的内部存储库下载最新版本的工件。

理想情况下,此脚本将使用 ant 或 unix shell 脚本。

例如:

我有 myArtifact.war,它有 1.0、1.1 和 2.0 版本 - 我需要给定正确组 ID 和工件 ID 的脚本,以便从我们的 maven 存储库中检索 2.0 版本(当前使用工件)。

有什么简单的方法吗?

【问题讨论】:

如果您只需要检查当前的工件版本是否已经发布,这里有一个 nice plugin 可以做到这一点。 【参考方案1】:

您可以使用 Maven 依赖插件目标 getLATEST 作为工件的版本:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get
    -DremoteRepositories=<URL_to_your_maven_repo>
    -Dartifact=<group_id>:<artifact_id>:LATEST
    -Dpackaging=jar
    -Ddest=<target_dir>/<artifact_name>.jar

【讨论】:

RELEASE,这将排除快照。 RELEASELATEST 在 maven 3 中不再受支持。请参阅maven compatibility notes 的“插件元版本解析”部分。【参考方案2】:

您可以解析 maven-metadata.xml 以查看可用的版本,以及哪个版本是“发布”版本。有关更多详细信息,请参阅有关plugin versions 的答案。

如果您使用的是 Nexus,您可以使用REST API 来查询存储库。您也可以使用REST client API 来简化您的处理过程。

要更新发布版本,请在执行 mvn deploy 时激活 Maven super POM 中的 release-profile。您可以通过在命令行中添加 -Prelease-profile-DperformRelease=true 来做到这一点。

配置文件在 maven-release-plugin 的执行目标中默认激活。它由 useReleaseProfile 属性控制。有关详细信息,请参阅release-perform 目标的文档。

【讨论】:

以上是关于如何从 Maven 存储库中找到最新版本的工件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Nexus 2.x中提供对工件的最新快照的URL访问?

Maven检查最新版本,只发布不快照

maven Local Repo 版本神器

如何从 Artifactory 存储库下载最新的工件?

如何让 Grails 从 Maven 存储库中获取最新的本地 jars?

sbt update 没有解析存储库中的最新工件