全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 5 分钟 ✍️ juanwangdev

约定优于配置原则

Maven 通过约定定义标准项目结构,开发者无需手动配置路径。

标准目录结构

Maven 项目目录规范

XML
project/
├── pom.xml                 # 项目配置文件
├── src/
│   ├── main/
│   │   ├── java/           # 源代码目录
│   │   ├── resources/      # 资源文件目录
│   │   └── webapp/         # Web项目目录(WAR)
│   ├── test/
│   │   ├── java/           # 测试代码目录
│   │   └── resources/      # 测试资源目录
├── target/                 # 构建输出目录

目录用途说明

目录用途
src/main/java项目主代码
src/main/resources配置文件、properties、XML
src/main/webappWeb 应用资源(HTML、JSP)
src/test/java单元测试代码
src/test/resources测试配置文件
target编译输出、打包产物

约定的优势

对比传统配置方式

XML
<!-- Ant 需手动指定每个目录 -->
<project>
  <property name="src.dir" value="src"/>
  <property name="build.dir" value="build"/>
  <property name="dist.dir" value="dist"/>
  ...
</project>

<!-- Maven 无需配置,自动识别标准目录 -->
<project>
  <!-- 仅需声明坐标 -->
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
</project>

核心优势

优势说明
简化配置遵循约定无需声明路径
统一规范团队协作结构一致
工具兼容IDE、CI/CD 自动识别
降低门槛新人快速上手

自定义目录(可选)

如需打破约定,可手动配置:

XML
<build>
  <sourceDirectory>src/java</sourceDirectory>
  <testSourceDirectory>test/java</testSourceDirectory>
  <outputDirectory>build/classes</outputDirectory>
</build>

不推荐自定义目录,遵循约定更便于维护。

资源目录约定

默认行为

text
src/main/resources/          → 打包到构件根目录
src/main/resources/config/   → 打包为 config/

资源过滤示例

text
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>  <!-- 启用变量替换 -->
    </resource>
  </resources>
</build>

要点总结

  • Maven 标准目录:src/main/java、src/main/resources、src/test/java
  • 遵循约定可减少90%配置工作
  • target 目录存放构建产物,不提交版本库
  • 不推荐自定义目录结构,遵循约定最佳

📝 发现内容有误?点击此处直接编辑

← 上一篇 坐标与版本管理
下一篇 → pom.xml 基础结构
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库