Full recompilation on Groovy-Java joint compilation (#9890)Currently, incremental Groovy compilation only works for files compiled by the Groovy compiler. Java files are compiled by the Java compiler.This PR disables incremental compiler if Java files found because this might cause incorrectness.
Groovy incremental compilation support (#9616)Inspired by https://github.com/gradle/gradle/pull/9388 , this PR implements Groovy compilation avoidance. Unlike Java, things are a little more complex in Groovy compilation - a compilation unit can generate multiple classes. Thus, we introduced a `sourceClassMappingFile`, which records the source to classes mappings during the compilation process. Later, we can use this information in incremental compiler: only the affected groovy source files get recompiled in next compilation.