Gradle 5.x - Ошибка публикации моей библиотеки в Maven Local - PullRequest
4 голосов
/ 18 апреля 2019

Я только что обновил свой Gradle до 5.x, и у меня появляется новая ошибка, когда я пытаюсь синхронизировать мой библиотечный проект.Эта ошибка исходит от издательского блока, который мне нужен, чтобы опубликовать мою библиотеку в maven local.

Это то, что я делал с Gradle 4, и она работала просто отлично:

apply plugin: 'maven-publish'
publishing {
    publications {
        library(MavenPublication) {
            groupId = 'myGroupId'
            artifactId = 'myArtifactId'
            version = android.defaultConfig.versionName

            artifact bundleDebugAar
        }
    }
}

В Gradle 5 у меня теперь есть ошибка об артефакте при синхронизации проекта gradle:

ОШИБКА: Не удалось получить неизвестное свойство bundleDebugAar для объекта типа org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

Когда я удаляю строку артефакта, я могу синхронизировать проект, но когда я пытаюсь опубликовать ToMavenLocal, моя сборка не выполняется:

Не удалось выполнить задачу ': mypackage: generatePomFileForLibraryPublication'.

Для этого провайдера не указано значение.

Я посмотрел руководство по обновлению gradle, ноЯ не знаю, как решить мою проблему: https://docs.gradle.org/5.0/userguide/upgrading_version_4.html#rel5.0:pom_compile_runtime_separation

Может кто-нибудь сказать мне, что изменилось в этой новой версии, которую я не вижу, пожалуйста?Спасибо.

Ответы [ 4 ]

0 голосов
/ 05 июня 2019

С Gradle 4.8+ вы должны заключить блок publishing{} в project.afterEvaluate

project.afterEvaluate {
    publishing {
        publications {
            aar(MavenPublication) {
                //...
                artifact bundleReleaseAar
            }
        }
    }
}

Официальный документ можно найти здесь :

До версии 4.8 блок публикации {} неявно обрабатывался так, как будто вся логика внутри него была выполнена после оценки проекта. Это сбивало с толку, потому что это был единственный блок, который вел себя таким образом. В рамках работ по стабилизации в Gradle 4.8 мы осуждаем это поведение и просим всех пользователей перенести свою сборку.

0 голосов
/ 25 апреля 2019

Поместите это в project.afterEvaluate:

project.afterEvaluate {
    publishing {
        publications {
            mavenDebugAAR(MavenPublication) {
                artifact bundleDebugAar
            }
        }
    }
}
0 голосов
/ 07 мая 2019

Вы можете попробовать это.

project.afterEvaluate {
    publishing {
        publications {
            library(MavenPublication) {
            groupId = 'myGroupId'
            artifactId = 'myArtifactId'
            version = android.defaultConfig.versionName

            artifact bundleDebugAar
        }
        }
    }
}
0 голосов
/ 18 апреля 2019

Попробуйте это.

Отключение R8 только для модулей библиотеки Android.

android.enableR8.libraries = false

Отключение R8 для всех модулей.

android.enableR8 = false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...