IntelliJ尝试编译Gradle配置中已排除的Java文件如何解决?
问题描述
你在Gradle构建配置中添加了如下排除指定Java文件的规则:
sourceSets { main { java { exclude '**/Foo.java' } } }
命令行执行Gradle编译时,Foo.java会正常被排除,但IntelliJ IDEA仍会尝试编译该文件,可按以下步骤解决:
解决步骤
- 将IntelliJ的默认构建工具切换为Gradle
打开File > Settings > Build, Execution, Deployment > Build Tools > Gradle,将「Build and run using」和「Run tests using」两个选项均设置为 Gradle。IntelliJ自带的编译器默认不会读取Gradle的源集排除规则,切换为Gradle构建后会完全遵循Gradle配置执行。 - 手动同步Gradle配置
修改设置后点击IDEA右侧Gradle工具窗口的刷新图标,或执行File > Reload All Gradle Projects手动同步配置,确保IDEA已读取到最新的exclude规则。 - 取消手动标记的源目录
不要手动将Foo.java所在的父目录标记为「Sources Root」,手动标记的源目录优先级高于Gradle的源集配置,会导致排除规则失效。如果存在手动标记的记录,右键对应目录选择Mark Directory as > Unmark as Sources Root即可。 - 多模块项目核对配置位置
如果你使用的是多模块Gradle项目,确认上述exclude规则是写在对应子模块的build.gradle文件中,而非根项目的的构建配置文件内。
完成以上操作后重新执行构建,被排除的文件就不会再参与IntelliJ的编译流程。
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

