【问题标题】:How to configure Gradle for code generation so that IntelliJ recognises generated java source?如何为代码生成配置 Gradle,以便 IntelliJ 识别生成的 java 源?
【发布时间】:2018-03-20 07:43:45
【问题描述】:

我正在将旧项目迁移到 Gradle。构建过程的一个步骤是为专有协议生成 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 将生成的源识别为生成的源,以便显示阻止编辑这些类的正常警告?

【问题讨论】:

  • 你试过this post中给出的例子了吗?
  • 我不确定,但也可能是:srcDirs += ["${buildDir}/generated-src/"].
  • @Henrik:现在我拥有了,像魅力一样工作。谢谢!您要添加应得信用的答案吗?
  • @PerHuss:我不介意。 :) 两秒钟。
  • @Opal: srcDir 部分按原样工作,来源已确定,只是我希望 IntelliJ 将其识别为生成...

标签: java intellij-idea gradle code-generation


【解决方案1】:

您需要特别告诉 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/')
    }
}

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2018-12-08
    • 2021-07-21
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多