HTTP/1.1 401 Unauthorized when uploading binary on bintray

你说的曾经没有我的故事 提交于 2019-12-18 08:11:11

问题


I'm trying to upload a android library module from android studio, followed by this blog: https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en

(1)

./gradlew install

Result:- BUILD SUCCESSFUL

(2)

./gradlew build bintrayUpload

Result:- Getting below error-

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':acr:bintrayUpload'.

    Could not create version '1.0.0': HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

I checked many times and sure my username and apikey is correct. (In username i'm using organization name instead of bintray username because my repository is created under organization). If anyone has an idea, I would appreciate the help :)


回答1:


In Bintray your username must be the username of your user account and not the Organisation. If you are the owner of the repo then the permission mechanism will allow the action.

In username i'm using organization name

Some documentation links:

https://github.com/bintray/gradle-bintray-plugin#readme

https://bintray.com/docs/usermanual/formats/formats_mavenrepositories.html#_working_with_gradle

EDIT: Make sure you are using the userOrg parameter, since your repo is under the organization subject and not under the user.

check step 4 here: https://github.com/bintray/gradle-bintray-plugin#step-4-add-your-bintray-package-information-to-the-bintray-closure

Here is a working 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'
        }
    }
}



回答2:


I would like to add more to @gba's answer here

Instead of directly including your bintray username and apikey, you should include them in local.properties file at root of your project. The local.properties file is by default added to .gitignore and hence not uploaded to githup with other files. It helps in keeping your username and apikey safe.

bintray.user=<your bintray username>
bintray.apikey=<your bintray apikey>

Then in your module gradle file add:

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
    }
}

Reference: https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/



来源:https://stackoverflow.com/questions/39960614/http-1-1-401-unauthorized-when-uploading-binary-on-bintray

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!