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 分钟前
Apache Doris 4.0.0 存算分离手动部署指南
apache·doris 4.0
bzmK1DTbd4 分钟前
SOLID原则在Java中的实践:单一职责与开闭原则
java·开发语言·开闭原则
winner88818 分钟前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)
java·开发语言·c++
直奔標竿19 分钟前
Java开发者AI转型第二十五课!Spring AI 个人知识库实战(四)——RAG来源追溯落地,拒绝AI幻觉
java·开发语言·人工智能·spring boot·后端·spring
qq_5895681043 分钟前
java基础学习,案例练习,即时通讯
java·开发语言·学习
逸Y 仙X1 小时前
文章十九: ElasticSearch Full Text 全文本查询
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
AI科技星1 小时前
全域数学·第卷:场计算机卷(场空间计算机)【乖乖数学】
java·开发语言·人工智能·算法·机器学习·数学建模·数据挖掘
0xDevNull1 小时前
Java泛型详解
java·开发语言·后端
嘻嘻哈哈樱桃1 小时前
牛客经典101题解题集--贪心算法+模拟
java·python·算法·贪心算法
AI进化营-智能译站1 小时前
ROS2 C++开发系列13-运算符重载让ROS2消息处理更自然
java·开发语言·c++·ai