咨询:Eclipse环境下Maven构建未拾取源文件新增变更的原因
这种情况我在日常开发里碰到过好多次,大概率是这几个原因导致的,一个个排查就行:
Eclipse自动构建未启用:先确认
Project > Build Automatically选项是否勾选。如果没开自动构建,手动修改源文件后Eclipse不会自动编译成新的class文件,Maven执行时自然还是用旧产物。要么勾选自动构建,要么手动执行Project > Clean...再重新构建。Maven缓存了旧构建产物:Maven会默认缓存之前的构建结果,尤其是你曾用过
-o(离线模式)参数的话。试试执行mvn clean install,先清空target目录的旧文件,再重新完整构建,确保用的是最新源码。新增文件不在Maven指定的源码目录:Maven默认扫描
src/main/java(主源码)和src/test/java(测试源码),如果你的新增文件放在了自定义目录,但没在pom.xml里配置build > sourceDirectory或build > testSourceDirectory,Maven构建时根本不会识别这些文件。检查下pom.xml的源码目录配置是否完整。Eclipse的Maven插件与项目不同步:M2E插件偶尔会出现感知延迟,比如你手动改了pom或新增文件后,插件没同步更新。右键项目选择
Maven > Update Project...,勾选Force Update of Snapshots/Releases后确认,让插件重新同步项目配置和文件。Maven构建阶段不匹配:如果你执行的是
mvn compile(仅编译主源码),但新增的是src/test/java下的测试文件,那肯定不会被拾取;反之亦然。确认你执行的Maven命令对应的生命周期阶段,是否覆盖了新增文件所在的目录。IDE索引或文件权限问题:极少数情况是Eclipse的索引损坏,或者新增文件的系统权限导致IDE无法读取更新。试试重启Eclipse,或者右键项目点击
Refresh刷新文件,再重新构建。
内容的提问来源于stack exchange,提问作者Priyanka

