Gradle7.0.2环境下Java库使用BuildConfig插件编译报compile配置不存在错误
问题原因
你遇到的报错是因为升级的Gradle版本≥7.0,该版本正式移除了已经废弃多年的compile依赖配置,而你使用的de.fuerstenau.buildconfig:1.1.8是停止维护的老版本,内部硬编码读取compile配置,因此触发找不到配置的异常。
解决方案
方案1:临时兼容(无需更换插件)
直接在模块的build.gradle中手动补回compile配置别名,让老插件可以正常识别:
// 加在plugins配置块之后即可 configurations { compile { canBeResolved = true extendsFrom implementation } }
新增该配置后重新同步即可,原有插件的所有配置逻辑无需修改。
方案2:更换为适配高版本Gradle的BuildConfig插件
原插件已经停止维护,推荐使用社区广泛使用的com.github.gmazzo.buildconfig插件,适配所有高版本Gradle,同时支持纯Java/Android/Kotlin等多场景,用法和原有插件基本一致:
- 替换插件声明:
plugins { id 'java-library' id 'com.github.gmazzo.buildconfig' version '4.2.0' // 可自行替换为最新稳定版 }
- 配置需要生成的BuildConfig字段:
buildConfig { packageName = "com.texisense.driver.java" // 替换为你的项目包名 // 按需添加字段,用法和Android原生buildConfigField完全一致 buildConfigField 'String', 'VERSION', "\"${project.version}\"" buildConfigField 'String', 'APP_NAME', "\"${project.name}\"" }
方案3:零依赖手动实现BuildConfig生成
如果不想引入第三方插件,可以直接通过自定义Gradle任务实现自动生成BuildConfig类,完全可控无兼容问题:
// 配置生成目录加入源码集 def buildConfigGenDir = file("$buildDir/generated-sources/buildconfig") sourceSets.main.java.srcDir buildConfigGenDir // 定义生成BuildConfig的任务 def generateBuildConfig = tasks.register('generateBuildConfig') { outputs.dir buildConfigGenDir doLast { // 替换为你的包名对应的目录路径 def pkgPath = "com/texisense/driver/java" def targetDir = new File(buildConfigGenDir, pkgPath) targetDir.mkdirs() // 生成BuildConfig.java文件 new File(targetDir, "BuildConfig.java").text = """ package com.texisense.driver.java; public final class BuildConfig { public static final String VERSION = "${project.version}"; public static final String PROJECT_NAME = "${project.name}"; // 按需添加其他常量字段 } """.trimIndent() } } // 编译Java前先执行生成任务 tasks.named('compileJava').configure { dependsOn generateBuildConfig }
内容的提问来源于stack exchange,提问作者olivier
相关产品推荐
相关产品推荐

