为何已使用mainClass仍收到Gradle过时函数警告不兼容Gradle8.0?
问题原因
该警告不是你自己编写的build.gradle配置导致的,是你引入的两个第三方插件内部调用了Gradle废弃API触发的:
- 当前使用的
org.openjfx.javafxplugin0.0.10版本适配的是旧版Gradle,内部逻辑仍在调用已废弃的JavaExec.main属性,没有适配Gradle 7+推出的mainClass新API - 当前使用的
org.beryx.jlink2.24.4版本同样存在内部调用废弃main属性的问题,不符合Gradle 8.0的API规范
解决方案
- 升级OpenJFX插件到0.1.0及以上稳定版,该版本已经完成Gradle新API适配,移除了对废弃属性的调用,修改配置如下:
id 'org.openjfx.javafxplugin' version '0.1.0' - 升级jlink插件到2.25.0及以上稳定版,该版本也修复了废弃API调用的问题,修改配置如下:
id 'org.beryx.jlink' version '2.26.0' - 若升级插件后仍有警告,可以在build.gradle中添加全局配置,强制所有JavaExec类型的任务使用mainClass属性:
tasks.withType(JavaExec).configureEach { mainClass.set(application.mainClass) }
内容的提问来源于stack exchange,提问作者Santa Monica
相关产品推荐
相关产品推荐

