This worked for me (Gradle 3.5, IDEA 2017.1.2, and the code generator happens to be
javacc, but this last certainly doesn’t mater):
apply plugin: "idea"
sourceSets.main.java.srcDir new File(buildDir, 'generated/javacc')
// Marks the already(!) added srcDir as "generated"
generatedSourceDirs += file('build/generated/javacc')
If I don’t use
generatedSourceDirs then the directory will be still marked as source directory in IDEA, but it won’t be flagged as “generated sources root”. So you need to use both.
BTW, from the command line the build works even without adding the directory to the
sourceSet manually, which is strange. If Gradle knew that there are sources there (or else the build should have failed), why is it not automatically in the
sourceSet? Maybe just some glitch specific to the JavaCC plugin, I don’t know…