背景
在项目中新增了一个module,在写测试用例时发现这个module下无法编译生成target目录,点击bulid按钮或者在module目录右键选择rebuild均无效。
点击build后,Event log打印”All files are up-to-date“,没有异常提示。
1.第一反应是IDEA是出什么bug了吧,尝试重启,无效。
2.怀疑IDEA配置错误,查看IDEA的maven版本、Java Compiler配置中的版本信息;查看Project Settings里的SDK等版本信息,Modules中新增module的Sources->Language level、Paths->Compiler output和没有异常,其他module配置一致。
至此,排除是IDEA配置问题,可能是这个module的maven配置问题
3.module中与maven配置相关的只有xxx-core.iml文件的sourceFolder和output,看了下文件路径也是对的。
4.继续看项目目录下的xxx.iml,看到异常...
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<!--下面俩行是core module下的配置,这么跑到项目配置里来了?-->
<sourceFolder url="file://$MODULE_DIR$/core/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/core/src/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
上面第4、5行是模块core里的源文件配置,怎么会放到项目iml配置文件里,尝试删除后,再次build新增模块,正常生成class文件。
反思原因,在新增模块时,模块中还没有xxx-core.iml文件时,我通过右键Make Directory As设置了Sources Root和Test Sources Root,由于还没生成模块的iml文件,所以这两个配置信息跑到项目的iml文件里,影响了后续模块的build。