Больше не может использовать bundleReleaseAar в MavenPublication - PullRequest
5 голосов
/ 26 апреля 2019

После обновления Gradle до 5.1.1 я обнаружил, что не могу добавить bundleReleaseAar в качестве артефакта в свою MavenPublication.Вот соответствующий фрагмент моего build.gradle:

apply plugin: 'maven-publish'

publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version libraryVersion
            artifactId libraryArtifactId

            artifact bundleReleaseAar
            //artifact sourcesJar
            //artifact packageJavadoc
        }
    }
}

Это не с:

Could not get unknown property 'bundleReleaseAar' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

Однако я могу видеть, что bundleReleaseAar делаетдействительно существует, когда я запускаю ./gradlew tasks, и я могу выполнить эту задачу очень хорошо.

Что мешает использовать его в качестве артефакта в моем развертывании сейчас?

Ответы [ 3 ]

9 голосов
/ 02 мая 2019

Краткий ответ:

Вам необходимо заключить в публикацию блок {} внутри проекта.afterEvaluate следующим образом:

project.afterEvaluate {
    publishing {
        publications {
            aar(MavenPublication) {
                groupId libraryGroupId
                version libraryVersion
                artifactId libraryArtifactId

                artifact bundleReleaseAar
                //artifact sourcesJar
                //artifact packageJavadoc
            }
        }
    }
}

Длинный ответ:

До версии 4.8 gradle блок публикации неявно обрабатывался так, как будто вся логика внутри него выполнялась после оценки проекта.Это был единственный блок, который вел себя таким образом, и это поведение было прекращено после версии Grade 4.8 для согласованности.Задание bundleReleaseAar, по-видимому, доступно только после завершения оценки проекта, и поэтому для поддержания поведения оно должно быть явно включено в project.afterEvaluate {}

Ссылка: https://docs.gradle.org/current/userguide/upgrading_version_4.html#rel4.8:deferred_configuration

0 голосов
/ 27 мая 2019

Я решил это, вызвав функцию артефакта в замыкании afterEvaluate, проблема в том, что функция артефакта не обрабатывает всю конфигурацию лениво

publishing {
   publications {
      aar(MavenPublication) {
        groupId libraryGroupId
        version libraryVersion
        artifactId libraryArtifactId
        afterEvaluate {
           artifact bundleReleaseAar
           //artifact sourcesJar
           //artifact packageJavadoc
        }
     }
   }
}

Ссылка https://github.com/moberwasserlechner/capacitor-oauth2/issues/10

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

Я исправил эту проблему, изменив артефакт с:

artifact bundleReleaseAar

до:

artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")

это поможет мне успешно синхронизировать Gradle, но я должен вызвать ассемблер напрямую, прежде чем ./gradlew publish

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