使用Android Plugin 3.1.2时uploadArchives配置解析失败求助
解决Android Library项目中uploadArchives配置解析失败的问题
我来帮你搞定这个uploadArchives的问题,结合你的模块结构来看,大概率是Module A使用的java插件和Android Gradle插件(AGP)的归档上传流程不兼容在搞鬼。毕竟java插件是为构建可执行Java程序设计的,而java-library才是专门为Java库打造的,能更好地适配AGP的依赖管理和归档逻辑。下面给你一步步的解决方案:
核心修复:将Module A切换为java-library插件
这是最直接也最稳妥的办法,能从根源上解决跨模块依赖的归档兼容性问题:
- 打开Module A的
build.gradle(或build.gradle.kts) - 把原来的
java插件替换成java-library:// 替换前 plugins { id 'java' } // 替换后 plugins { id 'java-library' } - 同步Gradle项目,此时Module A的产物会以标准库的形式被B和C识别,避免归档时的解析错误。
统一Gradle与AGP版本
版本不匹配也是配置解析失败的常见诱因,你需要确保项目根目录的build.gradle里,AGP版本和Gradle版本是官方兼容的组合。比如:
// 根build.gradle示例 buildscript { repositories { google() mavenCentral() } dependencies { // 示例:AGP 7.4.2对应Gradle 7.5及以上版本 classpath 'com.android.tools.build:gradle:7.4.2' } }
正确配置uploadArchives任务
在Module B和Module C的build.gradle中,确保uploadArchives任务正确配置了仓库和POM信息,同时能传递依赖的归档:
uploadArchives { repositories { mavenDeployer { // 可替换为你的远程仓库地址,或本地仓库路径 repository(url: "file://${project.rootDir}/local-maven-repo") // 配置你的POM基础信息 pom.groupId = 'com.yourcompany' pom.artifactId = 'module-b' // Module C需换成对应的artifactId pom.version = '1.0.0' } } }
清理缓存并重新构建
有时候Gradle缓存会残留旧的配置信息,导致解析异常,执行以下命令清理并重新同步:
./gradlew clean build --refresh-dependencies
特殊情况:如果必须保留java插件
如果因为某些原因不能把Module A换成java-library,你需要手动配置Module A的归档任务,让Android模块能识别它的产物:
在Module A的build.gradle中添加:
// 生成源码归档(可选,但推荐用于调试) task sourcesJar(type: Jar) { from sourceSets.main.allJava classifier 'sources' } // 声明要归档的产物,让依赖模块能识别 artifacts { archives jar archives sourcesJar }
然后在Module B和C中依赖Module A时,使用api project(':module-a')确保依赖能传递到归档任务中。
内容的提问来源于stack exchange,提问作者Jared
相关产品推荐
相关产品推荐

