不再能够在Maven发布中使用bundleReleaseAar

时间:2019-04-26 08:55:21

标签: android gradle android-gradle

将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确实存在,并且我可以很好地执行该任务。

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

4 个答案:

答案 0 :(得分:6)

简短回答:

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

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 {}

参考:https://docs.gradle.org/current/userguide/upgrading_version_4.html#rel4.8:deferred_configuration

答案 1 :(得分:0)

我从以下位置修复了此问题更改工件:

artifact bundleReleaseAar

收件人:

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

这可以帮助我Gradle同步成功,但是我必须在./gradlew publish之前直接致电assembleRelease

答案 2 :(得分:0)

我通过在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

答案 3 :(得分:0)

如果您有多种口味,则需要使用 bundleReleaseAar