在Gradle命令行中,Foo.java被排除,不会被编译,但是Intellij仍然尝试编译被排除的文件。
sourceSets {
main {
java {
exclude '**/Foo.java'
}
}
}
https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html
正如这里所说,IDEA不支持包括排除目录的子目录,所以您必须排除build/generated-sources的所有兄弟目录。例如:
idea {
module {
excludeDirs = [file(".gradle")]
["classes", "docs", "dependency-cache", "libs", "reports", "resources", "test-results", "tmp"].each {
excludeDirs << file("$buildDir/$it")
}
}
}
另一个可能的解决方案是
idea.module {
excludeDirs -= file(buildDir) //1
buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2
从excludeDirs中删除buildDir,然后排除每个buildDir子目录(除了generate -source)。