java项目结构由maven或gradle按约定自动生成,非手动创建;执行archetype命令可秒级生成标准骨架,多模块需父pom或settings.gradle统一管理,生成后须核查resources分离、类名文件名一致、依赖引用规范及gitignore/mvnw纳入版本控制。

Java 项目结构不是靠手动建文件夹凑出来的,而是由构建工具(Maven 或 Gradle)按约定自动生成的。只要命令用对、参数配准,几秒钟就能得到 src/main/java、src/test/java、pom.xml(或 build.gradle)齐全的标准骨架。
用 Maven archetype 快速生成单模块标准结构
Maven 内置原型机制是最直接的方式。执行以下命令即可生成符合 Java 标准目录规范的项目:
-
必须指定 archetypeArtifactId:比如
maven-archetype-quickstart(普通 Java 库)或maven-archetype-webapp(Web 项目),否则可能拉取过时模板,缺 resources 目录或编译插件 -
包路径自动对齐 groupId:如
-DgroupId=com.example.user,生成后类文件会自动落在src/main/java/com/example/user/下,且源码中 package 声明也匹配 -
测试结构同步生成:
src/test/java/com/example/user/和src/test/resources/一并创建,确保 @Test 类能被正确识别,测试配置不污染主包
用 Maven 创建多模块项目(父子结构)
多模块不是“多个独立项目”,而是一个根 POM 统筹管理多个子模块。关键在三步:设父为 pom、声明 modules、子模块继承 parent。
-
根 pom.xml 必须设
<packaging>pom</packaging>,并在<modules></modules>中列出子模块路径(如<module>common</module>),路径区分大小写、不能有空格或斜杠错误 -
每个子模块有自己的 pom.xml,含
<parent></parent>指向根,<packaging>jar</packaging>(或 war),依赖通过<dependency></dependency>引用同父下的其他模块(版本可继承,无需硬编码) - IDE 需主动导入 Maven 项目:IntelliJ IDEA 打开根目录 → 选 “Import project from external model” → 勾选 Maven;Eclipse 用 File → Import → Maven → Existing Maven Projects。否则模块间依赖连线不会显示,代码跳转失效
用 Gradle 创建多模块项目
Gradle 多模块更轻量,靠 settings.gradle 声明模块,各模块 build.gradle 独立配置,适合强调灵活性和脚本化控制的团队。
-
根目录下创建 settings.gradle,用
include "common", "service", "web"注册子模块,路径即子目录名(如./common) -
子模块目录自带 build.gradle,可定义自身插件(如
java-library)、依赖(implementation project(":common"))和发布配置 -
资源与源码路径仍需严格对应:即使不用 Maven,Gradle 默认也遵循
src/main/java/com/example/...结构,包声明必须与物理路径一致,否则编译报package does not exist
生成后必须检查的关键细节
工具能搭出骨架,但规范落地靠人工核验。以下四点最容易出错,建议生成后立即确认:
- src/main/resources 和 src/test/resources 是否分离:前者打包进 jar,后者仅测试期生效;.properties/.yml 文件绝不能放进 java 目录,否则编译器会尝试“编译”文本文件而报错
- 所有 .java 文件名必须与 public 类名完全一致(大小写敏感),且一个文件只放一个 public 类;工具类别堆进 CommonUtils,应按职责拆成 DateFormatters、JsonValidators 等专用类
-
模块间依赖是否用 artifactId 引用,而非本地路径:比如
<artifactid>common</artifactid>,不是../common;Maven install 后 jar 会进本地仓库,供跨项目复用 - .gitignore 和 mvnw(Maven Wrapper)应纳入版本控制:保证不同开发机使用统一 Maven 版本,避免 “在我机器上能跑” 类问题
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











