Warm tip: This article is reproduced from serverfault.com, please click

android-摇篮5.x

(android - Gradle 5.x)

发布于 2019-04-18 13:28:39

我刚刚将Gradle升级到5.x,并且在尝试同步库项目时遇到新错误。此错误来自一个发布块,我需要将我的库发布到本地Maven。

这是我过去使用Gradle 4所做的,并且工作得很好:

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

            artifact bundleDebugAar
        }
    }
}

使用Gradle 5,当我同步gradle项目时,我现在有一个关于工件的错误:

错误:无法获取类型为org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication的对象的未知属性'bundleDebugAar'。

当我删除工件行时,我可以同步项目,但是当我尝试发布publishToMavenLocal时,我的构建失败了:

任务':mypackage:generatePomFileForLibraryPublication'的执行失败。

没有为此提供者指定任何值。

我查看了gradle升级指南,但不知道如何解决我的问题:https ://docs.gradle.org/5.0/userguide/upgrading_version_4.html#rel5.0:pom_compile_runtime_separation

有人可以告诉我这个我看不到的新版本中有哪些更改吗?谢谢。

Questioner
William Mouliné
Viewed
0
Gabriele Mariotti 2019-06-05 17:19:46

使用gradle 4.8+,你必须将publishing{}封装在project.afterEvaluate

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

你可以在这里找到官方文档

在Gradle 4.8之前,对发布{}块进行了隐式处理,就好像在评估项目后已执行了其中的所有逻辑一样。这是令人困惑的,因为它是唯一以这种方式运行的块。作为Gradle 4.8稳定工作的一部分,我们不赞成使用此行为,并要求所有用户迁移其内部版本。