微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gradle 不构建 - 类 DefaultTaskInputPropertyRegistration 不能转换为类 TaskInputs

如何解决Gradle 不构建 - 类 DefaultTaskInputPropertyRegistration 不能转换为类 TaskInputs

一个项目正在使用 gradle wrapper 4.6,我不得不将其更新到 5.0,因为我的电脑安装了 java 11。

将 gradlew 4.6 与 java 8 build 一起使用时没问题。

升级到 5.0 并使用 java 11(gradle wrapper 5.0 和已安装的 gradle 6.5)运行后,不断抛出以下错误

FAILURE: Build Failed with an exception.

* Where:
Build file 'C:\MyProject\build.gradle' line: 52

* What went wrong:
A problem occurred evaluating root project 'my_project'.
> Failed to apply plugin [id 'org.gradle.java']
   > Could not create task ':api:compileJava'.
      > class org.gradle.api.internal.tasks.DefaultTaskInputPropertyRegistration cannot be cast to class org.gradle.api.tasks.TaskInputs (org.gradle.api.internal.tasks.DefaultTaskInputPropertyRegistration and org.gradle.api.tasks.TaskInputs are in unnamed module of loader org.gradle.internal.classloader.Visitableurlclassloader @26653222)

build.gradle 中产生错误的行是

configure(subprojects - [project(':event')]) { subProject ->
    apply plugin: 'java' // <= this line 52
    apply plugin: ...
    ...
}

这是一个多项目的gradle项目,build.gradle是根

不管我运行哪个 gradle 命令或任务,我总是收到同样的错误

更新
适用于高达 4.10 的 gradle。 5.0 开始失败。

https://docs.gradle.org/5.0/userguide/upgrading_version_4.html

Java 库分发插件现在基于 Java 库插件而不是 Java 插件。 虽然它应用了 Java 插件,但它的行为略有不同(例如,它添加了 > API 配置)。因此,请务必在升级后检查您的构建是否按预期运行。

仍然不知道这意味着什么以及我应该用它做什么

更新 2 (Laksitha Ranasingha 评论
在gradle 5.0中试过,build.gradle重写了plugins定义:

configure(subprojects - [project(':event')]) { subProject ->
    plugins { // <= line 52
        id 'java' 
        ...
    }
    ...
}

导致以下错误

FAILURE:构建失败,出现异常。

  • 哪里: 构建文件 'C:\MyProjects\build.gradle' 行:52

  • 出了什么问题: 评估根项目“myproject”时出现问题。

在 org.gradle.api.Project 类型的项目“:api”上找不到参数 [build_1pjmxtxk8zv5w7chejrs1s08b$_run_closure2$_closure7@73b72d7e] 的方法 plugins()。

  • 试试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

  • https://help.gradle.org

    获得更多帮助

此版本中使用了弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。 使用“--warning-mode all”来显示单个弃用警告。 见https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings

配置在 0 秒内失败

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。