使用Gradle构建Liferay Portlet服务时遇compileOnly()方法找不到错误
问题解决:Gradle中找不到
compileOnly()方法 原因分析
报错Could not find method compileOnly()主要来自两个核心问题:
- 未启用Java插件:
compileOnly是Gradle Java插件提供的依赖配置项,若项目未声明该插件,Gradle无法识别这个方法。 - Gradle版本与Liferay DXP 7.4不兼容:Liferay DXP 7.4官方要求Gradle版本至少为6.9.x,你当前使用的5.6.4版本过旧,存在兼容性偏差。
解决方案
方案1:添加Java插件到build.gradle
在dependencies代码块前,加入Java插件声明:
plugins { id 'java' } dependencies { compileOnly group: "com.liferay", name: "com.liferay.petra.lang", version: "5.2.1" compileOnly group: "com.liferay", name: "com.liferay.petra.string", version: "5.3.4" compileOnly group: "com.liferay", name: "com.liferay.portal.aop.api", version: "3.0.5" compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "13.0.0" compileOnly group: "org.osgi", name: "org.osgi.annotation.versioning", version: "1.1.2" compileOnly group: "org.osgi", name: "org.osgi.core", version: "6.0.0" compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.5.1" compileOnly group: "com.liferay", name: "com.liferay.osgi.util", version: "8.1.0" compileOnly group: "javax.portlet", name: "portlet-api", version: "3.0.1" compileOnly group: "org.slf4j", name: "slf4j-api", version: "1.7.2" }
方案2:升级Gradle至兼容版本
- 修改项目根目录下
gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.4-bin.zip
- 执行终端命令更新wrapper:
- Windows:
gradlew.bat wrapper --gradle-version 6.9.4 - Linux/macOS:
./gradlew wrapper --gradle-version 6.9.4
- Windows:
方案3:使用Liferay官方Gradle插件(推荐)
Liferay提供的Gradle插件会自动配置Java环境、依赖规则等,更适配DXP项目:
plugins { id 'com.liferay.plugin' version '1.0.10' } dependencies { compileOnly group: "com.liferay", name: "com.liferay.petra.lang", version: "5.2.1" // 其余依赖保持不变 }
验证步骤
- 保存修改后的
build.gradle - 在IntelliJ IDEA中点击「Sync Project with Gradle Files」按钮
- 重新执行构建任务,检查报错是否消失
内容的提问来源于stack exchange,提问作者Eboua Osée
相关产品推荐
相关产品推荐

