如何仅通过Maven命令从Nexus获取快照版本的时间戳与构建号
解决方案
完全可以通过原生Maven命令实现需求,不需要调用Nexus3 API,也不需要手动解析构件元数据,所有元数据处理逻辑Maven会内部自动完成。
1. 直接下载最新快照构件到本地
使用Maven官方的dependency插件的get目标,即可自动拉取Nexus上对应构件的最新时间戳版本:
mvn dependency:get -DremoteRepositories=<你的Nexus快照仓库公开地址> -DgroupId=<构件groupId> -DartifactId=<构件artifactId> -Dversion=<快照版本号,如1.0.0-SNAPSHOT> -Dpackaging=<包类型,如jar/war> -Dtransitive=false
参数说明:
- 添加
-Dtransitive=false是为了避免同时下载构件的依赖包,只拉取目标构件- 如果构件有分类器(如sources、javadoc等),额外添加
-Dclassifier=<分类器值>参数即可- 需提前在Maven的settings.xml中配置好对应Nexus仓库的账号密码认证信息,否则会拉取失败
2. 获取带时间戳的完整快照版本号
下载完成后,执行以下命令即可输出对应构件的带时间戳的完整版本号,以及本地存储路径:
mvn dependency:properties -DgroupId=<构件groupId> -DartifactId=<构件artifactId> -Dversion=<快照版本号> -Dpackaging=<包类型>
执行后在输出日志中可以找到两个关键属性:
dependency.<groupId>.<artifactId>.version:带时间戳的完整快照版本,格式类似1.0.0-20240520.143221-3dependency.<groupId>.<artifactId>.<packaging>:构件在本地Maven仓库中的绝对存储路径
3. 直接获取最新快照的远程下载地址(无需提前下载)
如果不需要把构件下载到本地,只需要获取远程下载链接,可以使用help插件的evaluate能力拼接地址:
mvn help:evaluate -Dexpression="artifact.remotePath" -DgroupId=<构件groupId> -DartifactId=<构件artifactId> -Dversion=<快照版本号> -Dpackaging=<包类型> -q -DforceStdout | xargs -I {} echo "<你的Nexus快照仓库地址>/{}"
执行后会直接输出对应最新快照版本的完整下载链接。
内容的提问来源于stack exchange,提问作者Ridae HAMDANI
相关产品推荐
相关产品推荐

