不再能够在Maven发布中使用bundleReleaseAar [英] No longer able to use bundleReleaseAar in MavenPublication
问题描述
将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屋!