使用Gradle maven-publish插件发布至Artifactory报401 Unauthorized排查
Gradle maven-publish 对接Artifactory触发401错误的诱因定位
典型报错表现:无法PUT请求'https://xxx.jar',服务器返回状态码401 Unauthorized
核心诱因
该问题和Gradle版本、maven-publish插件逻辑、Artifactory仓库权限、认证方式选择均无关,根本原因是Gradle读取凭证时,加载的properties配置文件写法不符合Java Properties的解析规则,导致实际传给私服的密码携带了多余的双引号字符,凭证不匹配被服务器拦截。
问题形成逻辑拆解
- Java Properties工具类的默认解析逻辑中,配置项值两侧包裹的双引号不会被自动剥离,和Maven的配置解析规则存在本质差异:
- 若配置文件中写为
password="actual_password",程序读取到的实际密码值会包含首尾的双引号,最终向Artifactory传递的是带引号的错误凭证,自然无法通过校验。 - 只有配置写法为
password=actual_password时,读取到的密码才是无多余字符的正确值。
- 若配置文件中写为
- 为什么同样的凭证走Maven命令能成功上传:Maven在解析自身配置文件时,会自动移除值两侧包裹的双引号,传递给服务器的是正确的无引号凭证,因此不存在校验失败问题。
- 为什么开启Basic、Digest认证配置也解决不了问题:认证握手逻辑调整并不能修正传递的凭证本身的错误值,无论选择哪种认证方式,带双引号的错误密码都无法通过Artifactory的身份校验。
修复方案
直接修改对应properties配置文件内的用户名、密码写法,移除包裹值的多余双引号,保证Gradle读取到的凭证和私服存储的正确值完全一致即可。
内容的提问来源于stack exchange,提问作者FredSuvn
相关产品推荐
相关产品推荐

