Mar*_*ler 29 android gradle android-gradle-plugin maven-publish android-gradle-7.0
使用 Gradle7.2和这些插件:
plugins {
id 'com.android.library' // Android Gradle Plugin 7.1.2
id 'maven-publish'
}
Run Code Online (Sandbox Code Playgroud)
它仍然有效,但给了我这个弃用警告:
警告:不会自动为 Android Gradle Plugin 8.0 的 Maven 发布创建软件组件。要选择未来的行为,请在文件
android.disableAutomaticComponentCreation=true中设置 Gradle 属性gradle.properties或使用新的发布 DSL。
发行说明也提到了它,但这些引用的是过时的文档:
从 AGP 8.0 开始,默认情况下将禁用自动组件创建。目前,AGP 7.1 自动为每个构建变体创建一个与构建变体同名的组件,以及一个包含所有构建变体的 all 组件。此自动组件创建将被禁用。要转换到新行为,您应该通过设置为 来手动禁用自动组件
android.disableAutomaticComponentCreation创建true。
有关更多信息,请参阅使用 Maven 发布插件。
但是在文件中启用 AGP 8.0 默认行为预览时gradle.properties:
android.disableAutomaticComponentCreation=true
Run Code Online (Sandbox Code Playgroud)
它找不到属性components.release:
FAILURE: Build failed with an exception.
* Where:
Script 'publish.gradle' line: 53
* What went wrong:
A problem occurred configuring project ':library'.
> Could not get unknown property 'release' for SoftwareComponentInternal set of type org.gradle.api.internal.component.DefaultSoftwareComponentContainer.
Run Code Online (Sandbox Code Playgroud)
违规行如下:
release(MavenPublication) {
from components.release
}
Run Code Online (Sandbox Code Playgroud)
该变体仍然存在,但它不再创建组件:
androidComponents {
onVariants(selector().all(), {
println "$it.name"
})
}
Run Code Online (Sandbox Code Playgroud)
如何升级到这个“新的发布 DSL”并创建要发布的软件组件?
Mar*_*ler 39
根据PublishingOptions,必须定义一个android.publishing块:
android {
publishing {
singleVariant('release') {
withSourcesJar()
withJavadocJar()
}
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
要一次定义多个变体:
android {
publishing {
multipleVariants {
withSourcesJar()
withJavadocJar()
allVariants()
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后例如。components.getByName('release')将会再次被知晓。
| 归档时间: |
|
| 查看次数: |
40950 次 |
| 最近记录: |