You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从Maven仓库下载Jar或Pom文件?

Maven仓库POM文件下载的Python实现方案

你现在的代码已经能拿到Maven包的核心元数据了,接下来只需要利用Maven仓库的固定路径规则,就能拼接出POM文件的下载链接,直接请求保存即可。

核心思路

Maven中央仓库的文件存储路径是固定格式的:
https://repo1.maven.org/maven2/[groupId替换点为斜杠]/[artifactId]/[version]/[artifactId]-[version].pom

比如你示例里的javax.servlet:javax.servlet-api:4.0.1,对应的POM路径就是:
https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1.pom

完整代码实现

基于你现有的代码,扩展一下就能实现下载:

import requests

# 搜索接口和查询条件
search_url = "https://search.maven.org/solrsearch/select?q="
query = "g:javax.servlet a:javax.servlet-api v:4.0.1"

# 执行搜索获取元数据
response = requests.get(search_url + query)
result = response.json()["response"]
if not result["docs"]:
    print("未找到对应包")
    exit()
match = result["docs"][0]

# 提取核心字段:groupId、artifactId、version
group_id = match["g"]
artifact_id = match["a"]
version = match["v"]

# 拼接POM文件的下载链接
group_path = group_id.replace(".", "/")
pom_url = f"https://repo1.maven.org/maven2/{group_path}/{artifact_id}/{version}/{artifact_id}-{version}.pom"

# 下载并保存POM文件
pom_response = requests.get(pom_url)
if pom_response.status_code == 200:
    with open(f"{artifact_id}-{version}.pom", "w", encoding="utf-8") as f:
        f.write(pom_response.text)
    print(f"POM文件已保存为 {artifact_id}-{version}.pom")
else:
    print(f"下载失败,状态码:{pom_response.status_code}")

关键说明

  • 从搜索返回的docs数组里,g对应groupId,a对应artifactId,v对应version,这些是拼接路径的核心
  • 把groupId里的.替换成/,就能得到仓库里的分组路径
  • 直接请求拼接好的URL,就能拿到POM文件内容,保存为本地文件即可

内容的提问来源于stack exchange,提问作者Bog Alt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:08:13