抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了Maven相关的知识。

环境

Windows 10 企业版 LTSC 21H2
Java 1.8
Maven 3.6.0

1 简介

1.1 说明

Maven是Apache基金会旗下的纯Java开源项目管理工具,基于项目对象模型(Project Object Model,POM)概念,通过中央配置文件统一管理项目的构建、依赖、报告与文档等全生命周期流程。

1.2 核心

Maven的核心价值体现在两大维度:

  • 构建自动化:替代手动执行编译、测试、打包等重复步骤,通过一条命令完成全流程构建。
  • 依赖管理规范化:自动管理项目依赖的第三方Jar包,解决传统依赖管理的查找难、冲突多、嵌套复杂等问题。

2 项目构建

2.1 含义

构建并不是创建,创建一个项目并不等于构建一个项目,构建是将项目源码、资源文件等转化为可运行产物的完整流程。

拿Java语言开发来说,构建就是将Java源代码进行编译,将编译后的文件以及其他的资源文件封装成JAR包或WAR包,然后放到服务器上部署运行。

2.2 对比

传统构建过程的几个环节:

  • 清理:删除以前的编译结果,为重新编译做好准备。
  • 编译:将Java源程序编译为字节码文件。
  • 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  • 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应JAR包,Web工程对应WAR包。
  • 部署:将打包的结果部署到远程仓库或将WAR包部署到服务器上运行。

同传统的构建过程不同,Maven可以自动构建,只需要一条命令即可完成所有的构建过程。

3 依赖管理

3.1 含义

在Java项目里面,可能依赖了第三方的Jar包,依赖管理就是将项目所依赖的Jar包按照一定的规则进行规范化管理。

3.2 对比

传统的依赖管理就是简单的将所依赖的Jar包下载到本地,然后添加到项目里,这种方式有很多缺点:

  • 查找困难:需手动在网上搜索Jar包,部分Jar包下载过程复杂麻烦。
  • 版本冲突:不同依赖引用同一Jar包的不同版本会导致冲突,手动排查成本高。
  • 嵌套依赖:一个Jar包可能依赖其他Jar包,使用一个Jar包需要同时下载其所依赖的Jar包。
  • 项目臃肿:如果项目依赖的Jar包过多,会导致项目体积庞大,版本控制仓库负担过重。

Maven维护了一个中央仓库,只需要在项目中添加pom.xml文件,在文件中以坐标的方式定位Jar包,就可以自动的从中央仓库中根据坐标下载该Jar包,并且会同时下载其所依赖的其他Jar包。

4 目录结构

在开发中,第三方工具或框架如果需要识别项目资源,可以通过两种方式:

  • 基于配置:通过配置手动告诉工具资源的位置。
  • 基于约定:工具预设一套目录规则,开发者按规则存放文件,工具自动识别。

Maven遵循“约定优于配置”的理念,定义标准化目录结构,避免手动配置资源位置,确保工具能自动识别源码、资源、测试代码等。

Maven项目标准目录结构:

code
1
2
3
4
5
6
7
8
9
10
11
12
13
项目根目录
├── src/ # 源码与资源目录
│ ├── main/ # 主程序目录(生产环境代码)
│ │ ├── java/ # 主程序Java源码(如com.example.demo)
│ │ └── resources/ # 主程序资源文件(如application.properties)
│ └── test/ # 测试程序目录(单元测试代码)
│ ├── java/ # 测试Java源码(如com.example.demo.Test)
│ └── resources/ # 测试资源文件(如test.application.properties)
├── target/ # 构建输出目录(自动生成)
│ ├── classes/ # 编译后的主程序字节码文件
│ ├── test-classes/ # 编译后的测试程序字节码文件
│ └── xxx.jar/xxx.war # 打包产物(Jar包/War包)
└── pom.xml # Maven核心配置文件(项目元信息、依赖、构建规则等内容)

评论