Maven-项目目录

每日一言

没必要的事就不做,必要的事就尽快做。

——折木奉太郎《冰菓》

什么是Maven

Maven 是一个 基于 POM(Project Object Model) 的构建工具,它通过一个 pom.xml 文件来管理项目的配置,包括依赖、插件、构建流程等。

Maven的作用包括以下几点:

  • 依赖管理:自动下载并管理项目所需的第三方库(如JUnit,Spring,MySQL驱动),避免手动引入jar包。
    • Jar包:用于打包Java类、资源文件和元数据的压缩文件格式。
  • 标准化项目结构:Maven 提倡统一的项目目录结构,关于具体的结构我们下面再讲。
  • 构建自动化:一条命令即可完成编译、测试、打包、安装、部署等流程。
  • 插件机制:支持丰富的插件。

最基础的Maven项目结构

1
2
3
4
5
6
7
8
9
10
11
12
your-project/
├── pom.xml <-- Maven 项目的核心配置文件
├── src/
│ ├── main/
│ │ ├── java/ <-- 应用/库的源代码(包结构从这里开始)
│ │ ├── resources/ <-- 配置文件、资源文件(会被打包到类路径)
│ │ └── webapp/ <-- (可选)Web 应用的资源,如 HTML、JSP、WEB-INF(用于 Web 项目)
│ └── test/
│ ├── java/ <-- 测试代码(与 main/java 平行的包结构)
│ └── resources/ <-- 测试所需的资源文件
└── target/ <-- 构建输出目录(编译后的类、打包文件等)

各部分说明:

  • pom.xml:项目的核心,定义依赖,构建配置,插件等。
  • src/main/java/ :放置应用的核心 Java 源代码。
  • src/main/resources/ :放置应用运行时需要的配置文件或资源,如 application.propertieslog4j.xml 等。
  • src/main/webapp/ :用于 Web 项目,包含 JSP、HTML、CSS、JavaScript 文件,WEB-INF 子目录下会放置 web.xml 等。
  • src/test/java/ :单元测试代码,通常使用 JUnit 或 TestNG。
  • src/test/resources/ :测试中用到的配置文件或数据文件。
  • target/ :存放 Maven 构建过程产生的文件,如编译后的 .class 文件、测试报告、打包生成的 JAR/WAR 文件等。这个目录通常可以安全删除,Maven 会在下次构建时重新生成。

除了基础的项目结构外,还有几个文件可以方便我们对于maven的使用:

Maven Wrapper

Maven Wrapper 是一种让项目自带Maven的“启动器”,它的关键作用是:

  • 保证团队成员使用相同版本的Maven,避免版本不一致的尴尬问题
  • 不需要预先在系统中全局安装Maven,项目开箱即用
  • 常用于CL/CD环境,如GitHub Action,Jenkins,GitLab CL等。
    • CL(持续集成):频繁地(每天多次)将代码集成到主分支,并自动构建、测试 ,从而快速发现问题。
    • CD(持续交付):CI 之后,自动将构建好的产物发布到“可上线”的环境(如测试、预发布环境)

Maven Wrapper 包含的文件

1
2
3
4
5
6
7
8
my-project/
├── mvnw <-- Unix/Linux/Mac 系统用的 shell 脚本
├── mvnw.cmd <-- Windows 系统用的批处理脚本
└── .mvn/
└── wrapper/
├── maven-wrapper.jar <-- 启动器的核心代码
└── maven-wrapper.properties <-- 配置使用的 Maven 版本

执行效果

当你运行:

1
./mvnw clean install
  1. 检查 .mvn/wrapper/maven-wrapper.properties 中指定的 Maven 版本。
  2. 如果没有这个Maven版本,自动下载。
  3. 使用对应版本的Maven执行 clean install 命令

所以在拿到手一个新的Maven项目时,可以优先使用mvnw命令,以确保使用相同的版本减少错误的发生。


Maven-项目目录
http://blog.ulna520.com/2025/04/30/Maven-入门_20250430_151142/
Veröffentlicht am
April 30, 2025
Urheberrechtshinweis