使用JFrog CLI上传文件至Artifactory失败,遇404校验错误求助
我来帮你搞定这个Artifactory上传的404问题!这个错误提示很明确——你尝试用**校验和部署(Checksum deploy)**的方式上传文件,但Artifactory服务器里找不到匹配SHA-1值 d8fdf6980d79e6e3966d44662c5d1b2d2fa37ec2 的已存在文件。这种部署方式的核心逻辑是让Artifactory直接复用已有文件的校验和关联记录,不用重复上传文件本身,但前提是仓库里已经存在对应校验和的文件才行。
下面是具体的排查和解决步骤:
先验证本地文件的SHA-1一致性
先计算你要上传的本地文件实际SHA-1值,对比错误里的校验和是否一致:- Linux/macOS系统执行:
shasum -a 1 你的文件名 - Windows系统执行:
certutil -hashfile 你的文件名 SHA1
如果结果不匹配,说明本地文件可能被修改过,或者你指定的校验和参数有误,修正后再尝试上传。
- Linux/macOS系统执行:
检查目标仓库的配置
确认你要上传的Artifactory仓库支持校验和部署功能,同时仓库类型为本地仓库(或虚拟仓库指向的本地仓库),且仓库没有被设置为只读状态。如果是远程仓库,校验和部署是不生效的。切换为直接上传文件的方式
如果仓库里确实还没有对应校验和的文件,那你应该放弃校验和部署,直接上传文件本身。比如用Artifactory的REST API命令:curl -u 你的账号:密码 -X PUT "http://你的Artifactory地址/目标仓库路径/文件名" -T "本地文件的完整路径"文件上传成功后,再用校验和部署的方式就不会报错了。
确认账号的部署权限
检查你的Artifactory账号是否拥有目标仓库的上传/部署权限,权限不足可能导致服务器无法处理你的校验和部署请求,甚至返回虚假的"文件不存在"提示。可以联系管理员确认权限配置。清理构建工具的本地缓存
如果你是通过Maven、Gradle等构建工具上传的,可能本地缓存的校验和与远程仓库不一致。清理缓存后重新执行上传:- Maven:
mvn clean install -U - Gradle:
./gradlew clean build --refresh-dependencies
- Maven:
内容的提问来源于stack exchange,提问作者Vishnu

