java - 如何配置 Gradle 进行代码生成以便 IntelliJ 识别生成的 java 源?

标签 java intellij-idea gradle code-generation

我正在将旧项目迁移到 Gradle。构建过程的一个步骤是为专有协议(protocol)生成 java 源代码。不幸的是,当将项目导入 IntelliJ 时,生成的源代码无法识别,因此该项目无法使用 IntelliJ 构建。

我有以下构建脚本(删除了不相关的部分):

apply plugin: "base"
apply plugin: "java"

task generate {
    description "Generates java code"
    inputs.files(fileTree("src/codegen/"))
    outputs.dir("${buildDir}/generated-src/")
    // ...
    // codegen
    // ...
}

compileJava {
    source(generate.outputs)
}

如果我添加以下内容,IntelliJ 会将生成的源添加为源,但无法将其识别为生成:

sourceSets {
    main {
        java {
            srcDir "${buildDir}/generated-src/"
        }
    }
}

有没有办法让 IntelliJ 将生成的源识别为生成的源,以便显示阻止编辑这些类的正常警告?

最佳答案

您需要具体告诉 Idea 该目录包含自动生成的源,如 this post 中所述。 .

apply plugin: "idea"

sourceSets.main.java.srcDir new File(buildDir, '${buildDir}/generated-src/')
idea {
    module {
        // Marks the already(!) added srcDir as "generated"
        generatedSourceDirs += file('${buildDir}/generated-src/')
    }
}

关于java - 如何配置 Gradle 进行代码生成以便 IntelliJ 识别生成的 java 源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640670/

相关文章:

java - rundll32 相当于在 Linux 平台中打开和查看文件

java - 使用 JMockit 模拟 ResourceLoading

java - 我如何在 IntelliJ 中显示通知?

intellij-idea - 使用 Intellij 设置多个项目 Gradle

Android Studio - Gradle 项目同步失败,发生 ASCII 错误

java - 如何从一个 ".java"文件中读取所有 ".zip"文件

java - ActionBarSherlock 类型 mAdded 无法解析或不是字段 Watson.java

intellij-idea - IntelliJ - 分层 HTML 着色

java - 如何使用提示设置 intellij 项目模板

spring-boot - 无法配置数据源:未指定 'url'属性,并且无法配置任何嵌入式数据源。Gradle项目中的错误