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

如何使用curl将目录中所有.jar文件上传至Nexus仓库管理器?

问题分析

你用的命令有两个核心问题:

  1. curl --upload-file 参数仅支持单个文件路径,直接传入多个文件路径会导致curl解析错误。
  2. 未指定Nexus仓库的具体上传路径——Nexus要求上传文件时必须对应到目标仓库的指定位置(比如Maven仓库需要遵循坐标结构,Raw仓库需要指定文件存放路径)。
解决方案

方案1:循环遍历逐个上传(通用Raw仓库场景)

如果是上传到Nexus的Raw仓库,或者不需要遵循Maven坐标规范的仓库,用bash循环处理每个jar文件即可:

# 遍历当前目录及子目录下所有.jar文件
find . -name "*.jar" -type f | while read jar_file; do
  # 替换为你的Nexus Raw仓库实际URL,比如http://nexus-host/repository/my-raw-repo/
  curl --upload-file "$jar_file" "http://nexus-host/repository/my-raw-repo/$(basename "$jar_file")" -u username:password
done

方案2:上传到Maven仓库(遵循坐标规范)

如果是上传到Nexus的Maven2仓库(Release/Snapshot),需要每个jar对应正确的Maven坐标(groupId、artifactId、version)。假设你的jar命名符合artifactId-version.jar格式,可以用以下脚本:

find . -name "*.jar" -type f | while read jar_file; do
  # 从文件名提取artifactId和version
  filename=$(basename "$jar_file")
  artifactId=${filename%-*.jar}
  version=${filename#$artifactId-}
  version=${version%.jar}
  
  # 替换为你的实际配置
  groupId="com.yourcompany"
  repo_url="http://nexus-host/repository/maven-releases/"
  
  # 构建符合Maven规范的上传路径
  target_path="${repo_url}$(echo $groupId | tr . /)/$artifactId/$version/$filename"
  
  curl --upload-file "$jar_file" "$target_path" -u username:password
done

如果jar命名或存储结构不符合规范,需要手动调整脚本逻辑适配你的文件情况。

额外注意事项

  • 确保Nexus账号拥有目标仓库的上传/部署权限。
  • 如果使用HTTPS,将URL中的http替换为https,测试环境下若证书验证失败可添加--insecure参数。
  • 加-v参数到curl命令中,可查看详细请求日志,快速定位权限不足、路径错误等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:25:25