1

从 Gradle 命令行中, Foo.java 被排除并且不会被编译,但 Intellij 仍会尝试编译排除的文件。

sourceSets {
    main {
        java {
        
            exclude '**/Foo.java'
        }
    }
}
4

1 回答 1

0

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 子项(生成源除外)。

于 2021-09-26T05:33:24.507 回答