在 SDK 开发过程中,使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时,你可能会使用 apply plugin: 'maven'
来发布到本地或远程的 Maven 仓库。但是,随着 Gradle 版本的更新,特别是从 Gradle 7 版本开始,原来的 maven
插件(apply plugin: 'maven'
)已经被弃用,导致编译时出现如下错误:
Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'maven' not found.
一、问题背景
Gradle 在不断升级,其插件和功能的管理也发生了很多变化。maven
插件曾是 Gradle 中发布 SDK 和库的标准插件,通常用于将 SDK 发布到本地或远程 Maven 仓库。SDK 开发人员通常会使用 apply plugin: 'maven'
来启用这个插件,然后配置发布任务。
但是,Gradle 7 版本及以上版本开始弃用了 maven
插件,改用了 maven-publish
插件。使用 Gradle 7 或更高版本时,如果继续使用 apply plugin: 'maven'
,就会遇到上面的错误,导致构建无法通过。
二、问题分析
Gradle 的 maven
插件与 maven-publish
插件的区别在于:
maven
插件:较早的 Gradle 版本(6.x 及以前)用于将构建的工件发布到 Maven 仓库。apply plugin: 'maven'
被广泛应用于 Java 项目中,但自 Gradle 7 以后,Gradle 团队建议使用更强大和灵活的maven-publish
插件。maven-publish
插件:替代了老旧的maven
插件,提供了更多的配置选项和更好的功能支持,适用于 Gradle 7 及以上版本。
所以:问题的根本原因是:maven
插件已不再支持,必须使用 maven-publish
插件替代。
三、解决方法
为了解决 Plugin with id 'maven' not found
错误,应该将 apply plugin: 'maven'
改为 apply plugin: 'maven-publish'
,并调整相关的发布配置。
gradle__mavenpublish__30">1. 在 build.gradle
文件中应用 maven-publish
插件:
gradle">plugins {id 'java' // 确保应用了 Java 插件id 'maven-publish' // 使用 Maven 发布插件
}
mavenpublish__39">2. 配置 maven-publish
插件进行发布:
使用 maven-publish
插件时,发布的配置项会放在 publishing
块中。你可以将生成的 JAR 或 AAR 文件发布到本地或远程的 Maven 仓库。
gradle">publishing {publications {mavenJava(MavenPublication) {from components.java // 发布 Java 组件groupId = 'com.example.sdk'artifactId = 'my-sdk'version = '1.0.0'}}repositories {maven {// 本地存放目录(可根据需要修改)def mavenDirPath = file('D:/aar')url = uri("file://${mavenDirPath.absolutePath}")}}
}
3. 手动指定构建输出:
如果你不使用 java
插件,或者需要手动指定构建产物(例如 JAR 或 AAR 文件),可以显式定义发布的文件路径:
gradle">publishing {publications {mavenJava(MavenPublication) {artifact file('build/libs/my-sdk.jar') // 手动指定 JAR 文件groupId = 'com.example.sdk'artifactId = 'my-sdk'version = '1.0.0'}}repositories {maven {def mavenDirPath = file('D:/aar')url = uri("file://${mavenDirPath.absolutePath}")}}
}
版权所有:XuanRan
未经书面授权,禁止转载