Gradle7.3.3+Java17+IDEA环境下找不到implementation()方法问题
Gradle升级后运行时出现
implementation()方法找不到的问题 我有一个根项目构建文件build.gradle(:mainProj),以及两个模块级构建文件build.gradle(:modA)、build.gradle(:modB)。之前项目使用Gradle 3.5在Eclipse中编译,现在切换到IntelliJ IDEA并将Gradle升级至7.3.3。执行命令PS C:\> gradle build可成功构建项目,但运行主文件时,modA的build.gradle第21行报错:找不到适用于参数[antlr:antlr:2.7.7]的implementation()方法。我已将旧的compile替换为implementation,但问题仍未解决。
原Gradle Wrapper配置
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
升级后的Gradle Wrapper配置
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
构建成功输出
Task :packageABC Engine Packaged Successfully... BUILD SUCCESSFUL in 1s 19 actionable tasks: 9 executed, 10 up-to-date PS C:\>
运行时错误信息
Build file 'C:\mainProj\modA\build.gradle' line: 21 A problem occurred evaluating root project 'modA'. > Could not find method implementation() for arguments [antlr:antlr:2.7.7] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights.
modA的build.gradle内容
repositories { mavenCentral() } dependencies { implementation 'antlr:antlr:2.7.7' implementation 'com.mchange:c3p0:0.9.2.1' implementation 'com.mchange:mchange-commons-java:0.2.3.4' implementation 'commons-collections:commons-collections:3.2.2' implementation 'javax.transaction:jta:1.1' implementation 'net.sf.ehcache:ehcache-core:2.4.3' implementation 'net.sf.ehcache:ehcache-parent:2.2' implementation 'org.apache:apache:13' implementation 'org.apache:apache:16' implementation 'org.apache.commons:commons-lang3:3.4' implementation 'org.apache.commons:commons-parent:39' implementation 'org.hamcrest:hamcrest-core:1.3' implementation 'org.hamcrest:hamcrest-parent:1.3' implementation 'org.hibernate:antlr:2.7.5H3' implementation 'org.hibernate.common:hibernate-commons-annotations:4.0.5.Final' implementation 'org.javassist:javassist:3.18.1-GA' implementation 'xml-apis:xml-apis:1.0.b2' implementation 'commons-codec:commons-codec:1.10' implementation 'org.json:json:20160810' implementation 'mysql:mysql-connector-java:5.1.32' implementation group: 'org.hibernate', name: 'hibernate-core', version: '4.3.11.Final' implementation group: 'org.hibernate', name: 'hibernate-ehcache', version: '4.3.11.Final' implementation group: 'org.hibernate', name: 'hibernate-c3p0', version: '4.3.11.Final' implementation group: 'com.rabbitmq', name: 'amqp-client', version: '3.6.5' implementation 'com.sun.net.httpserver:http:20070405' implementation 'ch.qos.logback:logback-classic:1.2.6' } configurations.all { exclude module: "slf4j-log4j12" exclude group:"org.slf4j", module: "log4j-over-slf4j" exclude group:"org.slf4j", module: "jul-to-slf4j" exclude group:"org.slf4j", module: "slf4j-over-log4j" exclude group:"org.slf4j", module: "slf4j-log4j12" exclude group: "ch.qos.logback.classic.log4j" exclude group: "log4j", module: "log4j-api" exclude group: "log4j", module: "log4j" } jar { duplicatesStrategy = 'exclude' }
解决方案
- 问题原因:Gradle 7.x中,
implementation这类依赖配置方法是由Java插件提供的,modA的build.gradle未显式应用Java插件,导致无法识别该方法。 - 修复步骤:
- 在modA的
build.gradle最顶部添加Java插件的应用代码:plugins { id 'java' } - 同步Gradle项目后重新运行主文件即可。
- 在modA的
若根项目已配置了全局插件,也可检查子模块是否正确继承了根项目的配置,但最直接的方式是给每个Java模块显式应用Java插件。
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

