从 Gradle 命令行中, Foo.java 被排除并且不会被编译,但 Intellij 仍会尝试编译排除的文件。
sourceSets {
main {
java {
exclude '**/Foo.java'
}
}
}
从 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 不支持包含排除目录的子目录,因此您必须排除构建/生成源的所有同级。例如:
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 子项(生成源除外)。