Gradle 5.x - Ошибка публикации моей библиотеки в Maven Local

4

Я только что обновил свой 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

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

Теги:
maven
gradle
build.gradle

4 ответа

0

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

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

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

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

0

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

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

            artifact bundleDebugAar
        }
        }
    }
}
0

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

project.afterEvaluate {
    publishing {
        publications {
            mavenDebugAAR(MavenPublication) {
                artifact bundleDebugAar
            }
        }
    }
}
0

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

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

android.enableR8.libraries = false

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

android.enableR8 = false

  • 0
    Спасибо за ваш ответ, но, к сожалению, он не работает. Все та же ошибка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню