执行mvn eclipse:eclipse时src/main/groovy未识别为Eclipse源码目录
问题核心原因
mvn eclipse:eclipse生成Eclipse项目配置时,只会读取pom.xml中声明的构建路径、插件配置来标记源码目录,默认Maven仅识别Java标准路径src/main/java为源码目录。未在pom中显式声明Groovy源码路径、未配置Groovy构建相关插件时,执行命令后src/main/groovy的源码目录属性会被直接覆盖,和使用什么Archetype生成初始项目、Eclipse里手动转成Groovy项目没有关系,手动修改的目录属性每次执行Maven命令都会被重写。
可直接复用的解决方案
1. 补全pom.xml构建配置
在现有pom.xml的</dependencies>标签后,追加如下build配置块,版本和本地的Groovy 2.5、Eclipse使用的JDK 1.8完全对齐:
<build> <plugins> <!-- 固定Java编译版本为1.8,和Eclipse配置的JRE版本匹配 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- 显式注册Groovy目录为源码路径,供eclipse:eclipse识别 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>register-groovy-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>src/main/groovy</source> </sources> </configuration> </execution> </executions> </plugin> <!-- Groovy编译插件,和本地Groovy 2.5版本匹配 --> <plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> <version>1.13.1</version> <executions> <execution> <goals> <goal>addSources</goal> <goal>compile</goal> </goals> </execution> </executions> <configuration> <targetBytecode>1.8</targetBytecode> </configuration> </plugin> </plugins> </build>
2. 清理旧配置重新生成项目
- 关闭Eclipse中正在打开的目标项目
- 进入项目根目录,执行命令清理旧的Eclipse配置:
mvn eclipse:clean - 执行命令重新生成Eclipse项目配置:
mvn eclipse:eclipse - 回到Eclipse刷新项目,
src/main/groovy会被自动标记为源码目录,后续重复执行命令也不会被重置
配置说明
- 系统JAVA_HOME指向JDK11不影响上述配置,只要pom中指定编译目标为1.8、Eclipse构建路径绑定JDK1.8即可,不会出现版本冲突
- 所有目录配置都固化在pom.xml中,后续把这个配置合入自定义Archetype,新项目生成后不需要手动调整目录属性
- 之前尝试加插件不生效,核心原因是缺少build-helper-maven-plugin的显式源码路径声明,老版本Groovy生态的Maven插件不会自动向eclipse插件传递Groovy源码路径参数,必须手动注册
- 不需要手动在Eclipse里调整源码目录属性,所有配置以pom.xml为准,避免每次执行Maven命令后配置被覆盖
内容的提问来源于stack exchange,提问作者Poppaluu
相关产品推荐
相关产品推荐

