无需安装Maven,如何通过search.maven.org API获取指定构件依赖列表?
能否通过search.maven.org API获取Maven构件的依赖列表?
好消息是,可以通过search.maven.org的API间接获取指定Maven构件的依赖列表,不过这个过程需要多一步操作——因为该API没有直接返回依赖列表的端点,得先获取构件的POM文件,再从POM里解析出依赖信息。
具体操作步骤:
构造POM文件的请求URL
按照固定格式拼接URL:https://search.maven.org/remotecontent?filepath=[groupId的路径形式]/[artifactId]/[version]/[artifactId]-[version].pom比如你提到的
com.google.inject:guide:4.2.2,对应的URL就是:https://search.maven.org/remotecontent?filepath=com/google/inject/guide/4.2.2/guide-4.2.2.pom(这里groupId的路径形式是把
.替换成/,比如com.google.inject变成com/google/inject)获取并解析POM文件
请求这个URL就能拿到目标构件的POM XML内容,之后你需要解析XML里的<dependencies>节点:- 每个
<dependency>子节点包含groupId、artifactId、type(默认是jar)、version、scope这些字段 - 把这些字段按
[groupId]:[artifactId]:[type]:[version]:[scope]的格式组合,就能得到你示例里的依赖列表格式
- 每个
比如解析guide-4.2.2.pom的<dependencies>部分,就能得到你列出的四个依赖:
- com.google.inject:guice:jar:4.2.2:compile
- javax.inject:javax.inject:jar:1:compile
- aopalliance:aopalliance:jar:1.0:compile
- com.google.guava:guava:jar:25.1-android:compile
补充提示:
如果需要更复杂的依赖解析(比如处理传递依赖、排除依赖等),纯API解析POM可能会有点繁琐,这时可以结合Maven的命令行工具(比如mvn dependency:tree)来辅助,但如果是纯HTTP API的场景,上述获取POM再解析的方式完全可行。
内容的提问来源于stack exchange,提问作者Pramodya Mendis
相关产品推荐
相关产品推荐

