IntelliJ IDEA Kill掉阴魂不散的out目录

问题描述

在idea开发gradle项目时,我发现我的项目编译后,会同时出现out目录和build目录,然后导致了一些奇怪的启动问题。因此探索了好久来排查这个问题。

排查过程

1. 构建工具配置排查

根据文章: idea中out目录、target目录和build目录的区别?
说法是out目录是idea构建工具输出的目录, build是gradle构建工具输出的目录, target是maven构建工具输出的目录。
而idea中配置构建工具的地方在于File | Settings | Build, Execution, Deployment | Build Tools | Gradle 里面有个配置项: Build and Run. 这里可选GradleIDEA两种构建方式。
按理说我配置了都是Gradle方式构建,那应该会放弃IDEA自己的构建工具全部使用gradle进行构建,也就只有build目录而没有out目录。
但我这里默认配置就是gradle,也就对我没有用。

2. Gradle配置排查

既然idea配置看起来没有问题,我就怀疑是不是这个gradle项目有什么特殊的配置。因此我就单独对项目进行排查。我的排查方法是使用docker启动一个纯净的gradle容器,在容器中编译该项目,发现在容器中构建是没有out目录输出的,
因此可以排除是Gradle项目本身的问题。当然这里还有可以跟全局的gradle配置有关, 但我的问题不是这个,就忽略了。

3. IDEA配置排查

Gradle排查没有问题,思路还是放回到idea了。因此我删除掉了项目下的.idea文件夹, 这个文件夹存放了IDEA对这个项目的个性化配置。然后重新导入这个项目到IDEA中打开,重新编译,发现没有输出out目录了。
因此可以确定问题就在这个.idea文件夹的配置下了。
既然确定了问题,就一个个文件来排查了,做法拷贝正常的文件和异常的文件互换,然后找出导致问题的配置。这一步有点坑的是,idea本身对下面的配置在内存中可能也做了缓存,每修改一个配置都要重新启动IDEA才能生效。
但总之最终是通过这个方法确定了出现问题的配置。

结论

出现问题的配置:

.idea/workspace.xml

<component name="CompilerWorkspaceConfiguration">
    <option name="MAKE_PROJECT_ON_SAVE" value="true" />
</component>

也就是这个MAKE_PROJECT_ON_SAVE的配置,将其设置为false,就可以解决这个问题了。

继续排查这个配置出现的原因,发现这个是File | Settings | Build, Execution, Deployment | Compiler里面的Build Project automatically,勾选上的时候这个配置就会出现.....
也就是说,这是IDEA的自动编译功能导致的,我认为这可能是个BUG,使用自动编译时没有使用gradle而是继续使用了idea自带的构建工具,因此导致这个目录的出现。
另外一点是,我之前已经将这个配置取消勾选了,但最终xml文件却还是保留了这个配置,这应该也是个IDEA的BUG。

posted @ 2025-03-25 16:31  小小记录本  阅读(210)  评论(0)    收藏  举报