Eclipse 2026-03中maven-archetype-webapp 1.5未生成src/main/java的疑问
问题解答与永久解决方案
1. maven-archetype-webapp 1.5不生成src/main/java是否正常?
是正常的。这个Maven原型的原始定义就只包含pom.xml和src/main/webapp目录,设计初衷是服务于纯静态网页、JSP主导的简单Web项目,默认不包含Java源码和资源目录。你看到教程或导师环境自动生成,是因为旧版Eclipse的M2E插件会自动补全这些Maven标准目录,而非原型本身的特性。
2. 这是新版本Eclipse的变化吗?
是的。新版本Eclipse(4.39.0及以后)的M2E插件更严格遵循Maven原型的原始结构,不再自动为maven-archetype-webapp创建缺失的src/main/java等目录。旧版Eclipse会默认补全这些目录,这就是你看到差异的核心原因。
3. 是否存在Eclipse或Maven设置可让这些目录自动生成?
有两种永久解决方案,按需选择:
方案一:自定义Maven原型(最彻底)
基于官方原型修改,打造自己的Web项目骨架:
- 先创建一个临时的
maven-archetype-webapp项目,手动创建src/main/java、src/main/resources、src/test/java、src/test/resources目录 - 执行命令:
mvn archetype:create-from-project生成自定义原型 - 进入生成的原型目录,执行
mvn install将其安装到本地Maven仓库 - 后续创建项目时选择自己的自定义原型,就能自动生成所有所需目录
方案二:通过Maven配置自动补全目录
修改Maven的settings.xml,添加全局profile,针对maven-archetype-webapp自动生成目录:
- 打开Eclipse的
Window > Preferences > Maven > User Settings,找到你的settings.xml路径 - 编辑
settings.xml,添加以下内容:<profiles> <profile> <id>webapp-auto-src</id> <activation> <activeByDefault>true</activeByDefault> <property> <name>archetypeGroupId</name> <value>org.apache.maven.archetypes</value> </property> <property> <name>archetypeArtifactId</name> <value>maven-archetype-webapp</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>create-source-dirs</id> <phase>initialize</phase> <goals> <goal>mkdirs</goal> </goals> <configuration> <mkdirs> <mkdir>src/main/java</mkdir> <mkdir>src/main/resources</mkdir> <mkdir>src/test/java</mkdir> <mkdir>src/test/resources</mkdir> </mkdirs> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> - 保存文件后,重启Eclipse。以后创建
maven-archetype-webapp项目时,Maven会自动执行目录生成操作,Eclipse也会自动识别这些目录为源码/资源目录
临时快速修复(单次项目生效)
如果只是处理当前项目,可直接:
- 手动创建
src/main/java等缺失目录 - 右键项目 >
Maven > Update Project,Eclipse会自动将这些目录加入Java Build Path - 或者在项目的
pom.xml中添加build配置,明确指定源码目录:
添加后执行<build> <sourceDirectory>src/main/java</sourceDirectory> <testSourceDirectory>src/test/java</testSourceDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> </build>Maven > Update Project即可生效
内容的提问来源于stack exchange,提问作者Ranjeet Kumar
相关产品推荐
相关产品推荐

