【问题标题】:Use withType() for configuring Gradle task not compiling in IntelliJ使用 withType() 配置未在 IntelliJ 中编译的 Gradle 任务
【发布时间】:2021-03-01 23:27:35
【问题描述】:

我正在尝试在用 Java 编写的自定义 Gradle 插件中配置 Test 任务。

build.gradle.kts 中应用我需要的插件:

plugins {
    `java-gradle-plugin`
    `maven-publish`
}

我可以像./gradlew clean build那样通过命令行成功编译代码

但是,IntelliJ 在以下代码中抱怨 Test.class

public static void configureTesting(final Project project) {
    project.getTasks().withType(Test.class).configureEach(task -> {
    });
}

说:

Required type: java.lang.Class <S>
Provided: java.lang.Class <Test>
reason: no instance(s) of type variable(s) exist so that T conforms to Task

我像这样导入 Test 类:

import org.gradle.api.tasks.testing.Test;

Gradle 版本:6.7.1

IntelliJ:2020.2.3

【问题讨论】:

  • But, IntelliJ complains about Test.class in the following code: 抱怨它的地方 - 当从 IDE 构建或仅在编辑器中构建时?能否提供一个示例项目?
  • 我可以尝试尽快提取代码。但是,要回答您的问题:它在编辑器窗口中带有下划线(红线)。我可以毫无问题地构建项目。在 Preferences 中,Build and run 设置为 Gradle。也尝试在其中切换 Gradle 实例,但在编辑器用红线下划线时没有运气。
  • 请以示例项目向youtrack.jetbrains.com/issues/IDEA报告。
  • @Andrey 我可能会举报。

标签: gradle intellij-idea


【解决方案1】:

我花了一些(很多)时间在谷歌上搜索这个。最终,我在某处发现了一条评论,说可以尝试使用 IntelliJ 附带的内部 SDK (jbr),而不是手动下载的 SDK。这使它工作。内部 SDK 是 Java 11,我还安装了 Oracle 提供的最新版本的 Java 11。即使它们都是 Java 11,内部 SDK (jbr) 也可以正常工作,但外部 SDK 不能。对于其他项目,外部 SDK 工作正常,但不适用于构建 Gradle 插件。

【讨论】:

    猜你喜欢
    • 2020-06-02
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    相关资源
    最近更新 更多