如何通过命令行或REST API查询指定Maven构件的可用版本?
当然有不少便捷的方法能帮你在命令行里查询Maven构件的版本,不用再频繁打开浏览器啦!针对你提到的javax.enterprise:cdi-api,下面分享几种实用方案:
1. 使用Maven官方插件直接查询
Maven的versions插件自带了查询构件版本的功能,只要你本地有Maven环境就能用,不用额外安装工具。
运行以下命令即可:
mvn versions:search-repositories -Dartifact=javax.enterprise:cdi-api
这个命令会从你Maven配置的所有远程仓库(默认包含Maven Central)查询该构件的所有可用版本,输出结果会清晰列出版本号和对应的仓库信息。如果需要指定特定仓库,可以加上-DremoteRepositories=central参数(把central换成你需要的仓库ID)。
2. 调用Maven Central的REST API
如果不想启动Maven进程,直接用curl这类HTTP工具调用Maven Central的搜索API也是个高效办法,再配合jq(轻量JSON解析工具)还能快速提取纯版本号。
基础请求命令:
curl -s "https://search.maven.org/solrsearch/select?q=g:javax.enterprise%20AND%20a:cdi-api&rows=20&wt=json"
提取纯版本号(需安装jq):
curl -s "https://search.maven.org/solrsearch/select?q=g:javax.enterprise%20AND%20a:cdi-api&rows=50&wt=json" | jq -r '.response.docs[] | .v' | sort -V
这里的sort -V会帮你按照版本号的逻辑顺序排序,方便快速找到最新版本。
3. 针对私有Nexus仓库的REST API
如果你平时用的是公司内部的Nexus仓库,可以调用Nexus专属的REST API查询。假设你的Nexus地址是http://your-nexus-server,仓库ID是maven-public,命令如下:
curl -s "http://your-nexus-server/service/rest/v1/search/assets?repository=maven-public&maven.groupId=javax.enterprise&maven.artifactId=cdi-api" | jq -r '.items[] | .maven.version' | sort -V
记得替换成你自己的Nexus地址和仓库名称,如果仓库需要认证,可以加上-u username:password参数。
小技巧:封装成Shell脚本
为了更方便复用,你可以把查询逻辑写成一个简单的Shell脚本:
#!/bin/bash # 脚本用法:./maven-version.sh groupId artifactId if [ $# -ne 2 ]; then echo "用法:$0 <groupId> <artifactId>" exit 1 fi GROUP_ID=$1 ARTIFACT_ID=$2 curl -s "https://search.maven.org/solrsearch/select?q=g:$GROUP_ID%20AND%20a:$ARTIFACT_ID&rows=50&wt=json" | jq -r '.response.docs[] | .v' | sort -V
保存为maven-version.sh,赋予执行权限chmod +x maven-version.sh,之后就可以直接用./maven-version.sh javax.enterprise cdi-api快速查询版本了。
内容的提问来源于stack exchange,提问作者Carla

