Опубликовать aar файл в Maven Central с Gradle не работает

Опубликовать aar файл в Maven Central с Gradle все еще не работает:

Хорошо, дайте reapeat все шаги, которые я выполнил, чтобы "Опубликовать aar файл в Maven Central с помощью Gradle" (в основном я следил за этим guide), чтобы быть уверенным...

1) Я использую "Android Studio" , и у меня есть эта простая андроидная библиотека, которую я хотел бы получить на maven: https://github.com/danielemaddaluno/Android-Update-Checker

2) В папке UpdateCheckerLib у меня есть код lib выше. И применяя в build.gradle этой папки apply plugin: 'com.android.library', я получил в качестве выходного .aar в каталоге build/output/aar/каталога модуля

3) Мой первый шаг состоял в том, чтобы найти утвержденный репозиторий. Я решил использовать репозиторий

6) Я добавил в файл gradle.properties, расположенный в корне, следующие строки:

VERSION_NAME=1.0.1-SNAPSHOT
VERSION_CODE=2
GROUP=com.github.danielemaddaluno

POM_DESCRIPTION=Android Update Checker
POM_URL=https://github.com/danielemaddaluno/Android-Update-Checker
POM_SCM_URL=https://github.com/danielemaddaluno/Android-Update-Checker
POM_SCM_CONNECTION=scm:[email protected]:danielemaddaluno/Android-Update-Checker.git
POM_SCM_DEV_CONNECTION=scm:[email protected]:danielemaddaluno/Android-Update-Checker.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=danielemaddaluno
POM_DEVELOPER_NAME=Daniele Maddaluno

7) Внутри корня я изменил build.gradle следующим образом:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

Для этого:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

def isReleaseBuild() {
    return version.contains("SNAPSHOT") == false
}

allprojects {
    version = VERSION_NAME
    group = GROUP

    repositories {
        mavenCentral()
    }
}

apply plugin: 'android-reporting'

8) Я прочитал, что для каждого модуля или приложения я хочу загрузить в центр, я должен:

предоставить gradle.propeties изменить build.gradle, чтобы добавить следующую строку в конец: apply from: '../maven_push.gradle'

Итак, в папке UpdateCheckerLib I:

Добавлен gradle.properties:

POM_NAME=Android Update Checker
POM_ARTIFACT_ID=androidupdatechecker
POM_PACKAGING=aar

Изменено build.gradle, добавляющее в нижней части файла следующую строку: apply from: '../maven_push.gradle'

9) Чтобы подписать мои артефакты, я сделал:

gpg --gen-key
gpg --list-keys  --> get my PubKeyId...
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PubKeyId

10) Я добавил файл в путь ~/.gradle/gradle.properties с таким содержимым (чтобы получить секретный ключ, который я использовал gpg --list-secret-keys):

signing.keyId=xxxxxxx
signing.password=YourPublicKeyPassword
signing.secretKeyRingFile=~/.gnupg/secring.gpg

nexusUsername=YourSonatypeJiraUsername
nexusPassword=YourSonatypeJiraPassword

11) sudo apt-get install gradle в терминале, потому что "Andoid Studio" teminal не распознал gradle...

12) Наконец gradle uploadArchives

13) Я получил эту ошибку:

FAILURE: Build failed with an exception.

* Where: 
Build file '/home/madx/Documents/Workspace/Android-Update-Checker/UpdateCheckerLib/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':UpdateCheckerLib'.
> Could not create plugin of type 'LibraryPlugin'.

Вероятно, это просто из-за проблемы с плагином gradle/gradle, но я хотел бы поделиться всей процедурой, на случай, если это может быть полезно для кого-то еще!

Спасибо заранее!

Опубликовать aar файл в jCenter с Gradle все еще не работает:

Огромное спасибо JBaruch и его поклоннику! Поэтому я пытаюсь опубликовать в jCenter вместо Maven Central, поскольку факт того, что jcenter() является надмножеством mavenCentral(). Хорошо, давайте снова начнем с моей библиотеки github . Я пытался следовать некоторым его советам, но я все еще застрял... Я собираюсь написать свои шаги также для публикации jcenter (надеясь, что это может быть полезно кому-то). Может, мне что-то не хватает...

1) Зарегистрировано Bintray с помощью username: danielemaddaluno

2) Включение автоматической подписи загруженного контента:
от Bintray → Подписание GPG → скопируйте вставьте свой public/private keys. Вы можете найти соответственно эти два в файлах public_key_sender.asc/private_key_sender.asc если вы выполните следующий код (опция -a или --armor в gpg используется для создания пары ключей ASCII-armored):

    gpg --gen-key
    gpg -a --export [email protected] > public_key_sender.asc
    gpg -a --export-secret-key [email protected] > private_key_sender.asc

2.1) На той же веб-странице

3) На той же странице

4) На той же странице

5) Я добавил эти две строки в build.gradle в корень

classpath 'com.github.dcendents:android-maven-plugin:1.2'
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1"

Итак, мой собственный build.gradle в корне выглядит следующим образом:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'com.github.dcendents:android-maven-plugin:1.2'
        classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1"
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

6) Я изменил свой build.gradle, расположенный внутри моей папки проекта, и выглядит так:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: "com.jfrog.bintray"

// This is the library version used when deploying the artifact
version = "1.0.0"

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        //applicationId "com.madx.updatechecker.lib"
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 1
        versionName "1.0.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.jsoup:jsoup:1.8.1'
}


def siteUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker'      // Homepage URL of the library
def gitUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker.git'   // Git repository URL
group = "com.github.danielemaddaluno.androidupdatechecker"                      // Maven Group ID for the artifact


install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'

                // Add your description here
                name 'The project aims to provide a reusable instrument to check asynchronously if exists any newer released update of your app on the Store.'
                url siteUrl

                // Set your license
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'danielemaddaluno'
                        name 'Daniele Maddaluno'
                        email '[email protected]'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl

                }
            }
        }
    }
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}



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 = "androidupdatechecker"
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

7) Я добавил в корневой файл local.properties следующие строки:

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

8) Добавлен в мой PATH по умолчанию Gradle 2.2.1, фактически используемый "Android Studio" , например:

PATH=$PATH:/etc/android-studio/gradle/gradle-2.2.1/bin

9) Откройте терминал "Android Studio" и выполните:

gradle bintrayUpload

10) Из Bintray → Мои последние пакеты → androidupdatechecker (это здесь только после выполнения предыдущей точки 9) → Добавить в Jcenter → Установите флажок → Идентификатор группы = com.github.danielemaddaluno.androidupdatechecker ".

11) Наконец, я попытался следовать: Bintray → Мои последние пакеты → androidupdatechecker → Maven Central → Sync, но я получил эту ошибку на панели" Статус синхронизации" справа от страницы:

Last Synced: Never
Last Sync Status: Validation Failed
Last Sync Errors: 
Missing Signature: 
'/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-javadoc.jar.asc' 
does not exist for 'UpdateCheckerLib-1.0.0-javadoc.jar'. 
Missing Signature: 
'/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.aar.asc' 
does not exist for 'UpdateCheckerLib-1.0.0.aar'. 
Missing Signature: 
'/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-sources.jar.asc' 
does not exist for 'UpdateCheckerLib-1.0.0-sources.jar'. 
Missing Signature: 
'/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom.asc' 
does not exist for 'UpdateCheckerLib-1.0.0.pom'. 
Invalid POM: /com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom: 
Project description missing Dropping existing partial staging repository.

Ответ 2

Каждый шаг, который мне понадобился, чтобы опубликовать мой файл aar в JCenter и затем синхронизировать его с Maven Central, можно прочитать здесь: https://github.com/danielemaddaluno/gradle-jcenter-publish