在 bintray 上上传二进制文件时 HTTP/1.1 401 未经授权
Posted
技术标签:
【中文标题】在 bintray 上上传二进制文件时 HTTP/1.1 401 未经授权【英文标题】:HTTP/1.1 401 Unauthorized when uploading binary on bintray 【发布时间】:2017-02-19 00:18:59 【问题描述】:我正在尝试从 android studio 上传一个 android 库模块, 后面是这个博客:https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
(1)
./gradlew 安装
结果:- 构建成功
(2)
./gradlew build bintrayUpload
结果:- 低于错误-
FAILURE:构建失败并出现异常。
出了什么问题: 任务 ':acr:bintrayUpload' 执行失败。无法创建版本“1.0.0”:HTTP/1.1 401 Unauthorized [消息:此资源需要身份验证]
我检查了很多次,确定我的用户名和 apikey 是正确的。 (在用户名中,我使用组织名称而不是 bintray 用户名,因为我的存储库是在组织下创建的)。 如果有人有想法,我将不胜感激:)
【问题讨论】:
【参考方案1】:我想在@gba 的回答here 中添加更多内容
您应该将它们包含在项目根目录的 local.properties 文件中,而不是直接包含您的 bintray 用户名和 apikey。 local.properties 文件默认添加到 .gitignore 中,因此不会与其他文件一起上传到 githup。它有助于确保您的用户名和 apikey 安全。
bintray.user=<your bintray username>
bintray.apikey=<your bintray apikey>
然后在你的模块 gradle 文件中添加:
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg
repo = "maven"
name = "<Your library name>"
websiteUrl = <your siteUrl>
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
参考:https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/
【讨论】:
【参考方案2】:在 Bintray 中,您的用户名必须是您的用户帐户的用户名,而不是组织的用户名。 如果您是 repo 的所有者,那么权限机制将允许该操作。
在用户名中我使用的是组织名称
一些文档链接:
https://github.com/bintray/gradle-bintray-plugin#readme
https://bintray.com/docs/usermanual/formats/formats_mavenrepositories.html#_working_with_gradle
编辑: 确保您使用的是 userOrg 参数,因为您的 repo 位于组织主题而不是用户之下。
在此处检查第 4 步: https://github.com/bintray/gradle-bintray-plugin#step-4-add-your-bintray-package-information-to-the-bintray-closure
这是一个有效的 build.gradle:
buildscript
repositories
jcenter()
dependencies
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'
plugins
id "com.jfrog.bintray" version "1.7"
apply plugin: 'com.jfrog.bintray'
apply plugin: 'java'
bintray
user = 'myuserusername'
key = '**********'
pkg
repo = 'gradlerepo'
name = 'gradlepackage'
userOrg = 'myorgname'
version
name = '1.0-Final'
【讨论】:
当我使用用户名而不是组织时,我收到错误消息:- 无法创建包 'devsideal/maven/acr': HTTP/1.1 404 Not Found [message:Repo 'maven' was not找到] .... ? 您应使用您的用户名进行身份验证。但请使用您的组织名称作为存储库路径。在这里:github.com/bintray/… 您使用您的用户名。在 repo 路径中输入您的组织名称。 你能分享你的 build.gradle 文件吗? 我错过了 userOrg,现在只需在 bintray 中添加 userOrg = 'myorgname' 即可解决,谢谢。 嗨@gba 我已经成功地在 jcenter 上上传了我的第一个库,感谢您的帮助 :) 我需要库中的一些更新,所以我从 bintray 中删除了所有文件并再次构建并成功上传了我的更新在 bintray 上具有相同版本的库,但是当我同步它仍然显示旧时,它需要一些时间来更新?多少次了 ?或者我不能用旧版本更新库?我还需要更新库版本吗?以上是关于在 bintray 上上传二进制文件时 HTTP/1.1 401 未经授权的主要内容,如果未能解决你的问题,请参考以下文章
Android 使用bintray将本地库上传到JCenter做maven依赖库
Android 使用bintray将本地库上传到JCenter做maven依赖库