当前位置: 首页 > ai >正文

[Maven 基础课程]Maven 是什么

Maven 的官方网站:https://maven.apache.org/

来自 Maven 官网的对于 Maven 是什么的描述:

Apache Maven is a build tool for Java projects. Using a project object model (POM), Maven manages a project’s compilation, testing, and documentation.

翻译过来就是:Apache Maven 是一款用于 Java 项目的构建工具。通过使用项目对象模型(POM),Maven 能够管理项目的编译、测试以及文档编制工作。

目前 Maven 是 Java 中最主流的构建工具,Gradle 现在也非常火,SpringBoot 现在使用 Gradle 编译项目,但是 Gradle 比较复杂,没有 Maven 普及率广,可以说 Maven 对于 Java 程序员来说是必学的。

一句话总结:Maven 就像是 Java 项目的“管家”,它帮你把项目从源码一步步变成可运行的软件。

为什么需要 Maven

想象一下,你正在开发一个 Java 项目。这个项目需要用到很多其他库(比如处理 JSON 的 Gson 库、网络请求的 HttpClient 库),并且你还需要:

  • 编译你的源代码(.java 文件)。
  • 将编译好的类文件(.class 文件)打包成 JAR 或 WAR 文件。
  • 运行单元测试来确保代码没有问题。
  • 生成项目文档和报告。

在没有 Maven 之前,开发者需要手动去下载各种 JAR 包,然后放到项目的 lib 文件夹下。如果依赖的库又依赖其他库(传递依赖),就会变得非常麻烦。

Maven 的出现解决了这些痛点:

  • 自动下载依赖,不再手动复制 JAR 包
  • 清晰的项目结构,统一的目录规范
  • 标准化的构建流程,团队协作更方便
  • 提供丰富的插件支持,比如单元测试、文档生成、打包部署等

Maven 的核心功能

依赖管理(Dependency Management)

这是 Maven 最强大的功能之一。你只需要在项目的 pom.xml 文件中声明你需要的依赖(比如 Gson),Maven 就会:

  • 自动从中心仓库下载这些依赖,并缓存到你的本地仓库。
  • 自动处理依赖的依赖(也叫传递性依赖)。例如,如果你依赖 A,而 A 又依赖 BC,Maven 会自动为你下载 BC

有了 Maven,你再也不需要手动管理一堆 JAR 包了,这大大简化了项目配置和管理。

标准化项目结构

Maven 规定了一个标准的项目目录结构。例如:

your-project/
├── src/
│   ├── main/
│   │   ├── java/         # 存放你的源代码
│   │   └── resources/    # 存放配置文件、图片等资源文件
│   └── test/
│       ├── java/         # 存放你的测试代码
│       └── resources/    # 存放测试用到的资源文件
└── pom.xml               # 项目对象模型文件

这种结构让不同团队成员在接手新项目时能快速上手,因为它遵循了统一的约定。

标准化的构建生命周期

Maven 定义了一套标准的构建生命周期,它包括一系列阶段(phase),比如:

  • validate: 验证项目是否正确。
  • compile: 编译源代码。
  • test: 运行单元测试。
  • package: 将编译好的代码打包(通常是 JAR 或 WAR)。
  • install: 将包安装到本地仓库,供其他本地项目使用。
  • deploy: 将包部署到远程仓库。

你可以通过简单的命令,如 mvn clean install,来执行整个生命周期,而不需要关心每个阶段的底层细节。

http://www.xdnf.cn/news/18783.html

相关文章:

  • Java微服务AI集成指南:LangChain4j vs SpringAI
  • imx6ull-驱动开发篇43——I.MX6U 的 I2C 驱动分析
  • 软件开发技术栈
  • 集成电路学习:什么是ResNet深度残差网络
  • LeetCode 2140. 解决智力问题
  • JavaScript常用的算法详解
  • 8.26网络编程——Modbus TCP
  • 【跨国数仓迁移最佳实践7】基于MaxCompute多租的大数据平台架构
  • 发力低空经济领域,移动云为前沿产业加速崛起注入云端动能
  • Tomcat下载历史版本
  • 前沿技术趋势与应用:探索数字世界的下一个十年
  • 【第三章】软件测试缺陷管理:从判断到回归的全流程实践指南​
  • 支持向量机学习
  • 33.ansible 比较重要的配置文件
  • 可口可乐考虑出售Costa咖世家!加上星巴克中国、Peet’s皮爷咖啡,三大国际咖啡品牌“纷纷卖身”!咖啡行业格局彻底改写!
  • MyBatis-Flex是如何避免不同数据库语法差异的?
  • 微服务-23.网关登录校验-自定义GlobalFilter
  • 数据结构青铜到王者第五话---LinkedList与链表(2)
  • 洛谷: CF632D Longest Subsequence-普及+/提高
  • 相机激光安全等级和人眼安全
  • 亚马逊云科技免费套餐新政解析与实战:数据分析与可视化平台
  • 机器学习(二)特征工程
  • 深度剖析初始化vue项目文件结构!!【前端】
  • (MySQL索引事务) 本节目标 索引 事务
  • 机器学习--支持向量机
  • 数据结构(一):算法的时间复杂度和空间复杂度
  • 在使用spring ai进行llm处理的rag的时候,选择milvus还是neo4j呢?
  • 固定资产管理系统核心模块拆解:全流程管理逻辑
  • 30.LSTM-长短时记忆单元
  • 视频号存在争议了...