我刚刚将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
有人可以告诉我这个我看不到的新版本中有哪些更改吗?谢谢。
使用gradle 4.8+,你必须将publishing{}
块封装在project.afterEvaluate
project.afterEvaluate {
publishing {
publications {
aar(MavenPublication) {
//...
artifact bundleReleaseAar
}
}
}
}
在Gradle 4.8之前,对发布{}块进行了隐式处理,就好像在评估项目后已执行了其中的所有逻辑一样。这是令人困惑的,因为它是唯一以这种方式运行的块。作为Gradle 4.8稳定工作的一部分,我们不赞成使用此行为,并要求所有用户迁移其内部版本。