Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为代码生成配置Gradle,以便IntelliJ识别生成的java源代码?_Java_Intellij Idea_Gradle_Code Generation - Fatal编程技术网

如何为代码生成配置Gradle,以便IntelliJ识别生成的java源代码?

如何为代码生成配置Gradle,以便IntelliJ识别生成的java源代码?,java,intellij-idea,gradle,code-generation,Java,Intellij Idea,Gradle,Code Generation,我正在将一个遗留项目迁移到Gradle。构建过程的一个步骤是为专有协议生成java源代码。不幸的是,在将项目导入IntelliJ时,生成的源代码无法识别,因此项目无法使用IntelliJ生成 我有以下构建脚本(除去不相关的部分): 如果我添加以下内容,IntelliJ会将生成的源添加为源,但无法将其标识为已生成: 有没有办法让IntelliJ将生成的源识别为生成的源,以便显示阻止编辑这些类的正常警告?您需要特别告诉Idea目录包含自动生成的源,如中所述 你试过中给出的例子了吗?我不确定它也可能是

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

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

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


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

您需要特别告诉Idea目录包含自动生成的源,如中所述


你试过中给出的例子了吗?我不确定它也可能是:
srcDirs+=[“${buildDir}/generated src/”]
@Henrik:现在我已经试过了,工作起来很有魅力。谢谢你愿意添加答案以获得应有的信任吗?@PerHuss:不介意我添加。:)两秒钟。@Opal:srcDir部分按原样工作,源代码已识别,只是我想让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)
}
sourceSets {
    main {
        java {
            srcDir "${buildDir}/generated-src/"
        }
    }
}
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/')
    }
}