不再能够在Maven发布中使用bundleReleaseAar [英] No longer able to use bundleReleaseAar in MavenPublication

查看:682
本文介绍了不再能够在Maven发布中使用bundleReleaseAar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将Gradle升级到5.1.1后,我发现无法将bundleReleaseAar作为工件添加到我的MavenPublication中.这是我的build.gradle的相关代码段:

After upgrading Gradle to 5.1.1, I found that I'm unable to add bundleReleaseAar as an artifact to my MavenPublication. Here's the relevant snippet of my build.gradle:

apply plugin: 'maven-publish'

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

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

此操作失败,并显示以下信息:

This fails with:

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

但是,当我运行./gradlew tasks时,我能够看到bundleReleaseAar确实存在,并且我可以很好地执行该任务.

However, I am able to see that bundleReleaseAar does indeed exist when I run ./gradlew tasks, and I can execute that task just fine.

是什么使它现在无法在我的部署中用作工件?

What is preventing it from being used as an artifact in my deployment now?

推荐答案

简短回答:

您需要将发布{}块封装在项目内.afterEvaluate如下:

You need to enclose the publishing {} block inside a project.afterEvaluate as follows:

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

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

长答案:

在gradle 4.8版之前,对发布块进行了隐式处理,就好像在评估项目后已执行了其中的所有逻辑一样.这只是以这种方式运行的块,并且出于一致性的考虑,此行为在gradle 4.8版之后已中止. bundleReleaseAar任务似乎仅在项目评估完成后才可用,因此为了保持行为,必须将其显式包含在project.afterEvaluate {}

Prior to gradle version 4.8, publishing block was implicitly treated as if all the logic inside it was executed after the project was evaluated. This was only block that behaved this way and this behavior was discontinued post gradle version 4.8 for consistency's sake. bundleReleaseAar task seems to be available only after project evaluation is complete and therefore to maintain behavior it must be explicitly enclosed inside project.afterEvaluate{}

参考文献: https://docs.gradle.org/当前/用户指南/upgrading_version_4.html#rel4.8:deferred_configuration

这篇关于不再能够在Maven发布中使用bundleReleaseAar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆