Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源,使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分,并解释每个目录和文件的目的。

标准目录布局概览

以下是Maven项目中的标准目录布局概览:

复制代码
my-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   ├── resources
│   │   ├── filters
│   │   ├── assembly
│   │   ├── config
│   │   ├── scripts
│   │   └── webapp
│   │       ├── WEB-INF
│   │       └── META-INF
│   └── test
│       ├── java
│       ├── resources
│       └── filters
└── target

目录布局详解

  1. pom.xml
    pom.xml 文件是Maven项目的基石。它包含了项目配置信息,如依赖、插件、构建配置和其他设置。以下是一个基本的 pom.xml 文件示例:

    xml 复制代码
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>my-maven-project</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>my-maven-project</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>21</maven.compiler.source>
            <maven.compiler.target>21</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>5.10.0</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
  2. src 目录
    src 目录是存储所有源代码、资源和其他文件的地方。它包含两个主要子目录:maintest

    • src/main

      • java: 存放项目的主Java源代码文件。
      • resources: 存放非Java资源文件,如配置文件、属性文件和其他静态资源。
      • filters: 存放资源过滤过程中使用的过滤文件。
      • assembly: 存放装配描述符,定义项目如何被打包成分发包。
      • config: 存放配置文件。
      • scripts: 存放项目使用的脚本。
      • webapp : 存放Web应用资源,结构类似于WAR文件。包含 WEB-INFMETA-INF 目录,其中 WEB-INF 包含Web应用配置文件如 web.xml
    • src/test

      • java: 存放单元测试的Java源代码文件。
      • resources: 存放非Java测试资源文件。
      • filters: 存放测试资源过滤过程中使用的过滤文件。
  3. target 目录
    target 目录是Maven存储构建输出的地方,包括编译后的类、JAR文件、WAR文件和其他生成的资源。这个目录在构建过程中创建,通常不会包含在版本控制系统中。

关键目录详细说明

  • src/main/java

    存放项目的主Java源代码。目录结构应遵循标准的Java包命名约定。

  • src/main/resources

    存放应用所需的非Java资源。这些资源在构建过程中会被复制到类路径中,并在运行时由应用访问。

  • src/main/webapp

    用于Web应用,存放Web资源如JSP文件、HTML文件、CSS文件、JavaScript文件和其他静态资源。还包含 WEB-INF 目录,其中包含Web应用配置文件如 web.xml

  • src/test/java

    存放单元测试的Java源代码文件。目录结构应与 src/main/java 中的包结构一致。

  • src/test/resources

    存放测试所需的非Java资源。这些资源在测试阶段会被复制到类路径中,并由测试类访问。

  • target

    存放Maven构建输出,包括编译后的类、JAR文件、WAR文件和其他生成的资源。这个目录在构建过程中创建,通常在每次新构建前会被清理。

总结

理解Maven的标准目录布局对于有效的项目管理和协作至关重要。遵循这一布局,可以确保项目以一致和可预测的方式组织,使您和其他开发者更容易导航和维护项目。无论您是在开发简单的Java应用还是复杂的多模块项目,遵守Maven的标准目录布局都将有助于更高效地管理项目。

相关推荐
桦说编程2 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅4 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者5 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺5 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart6 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP7 小时前
MyBatis-mybatis入门与增删改查
java
孟陬10 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌10 小时前
一站式了解四种限流算法
java·后端·go
华仔啊11 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java