Maven的概念

1.什么是Maven
1.1.什么是Maven

Maven是跨平台的项目管理工具,主要服务于基于Java平台的项目构建、依赖管理以及项目信息管理。

1.2.什么是理想的项目构建

高度自动化,标准化,跨平台,可重用的组件

1.3.什么是依赖,为什么要进行依赖管理

依赖是项目构建或运行时所需要的一些文件,大部分项目需要第三方类库或项目文件。自动下载,统一依赖管理

1.4.有哪些项目信息

项目信息描述,开发人员信息,开发者信息等

2.什么是依赖管理

依赖管理是对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。

依赖管理是对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

3.什么是项目构建

项目构建是一个从编写源代码到编译、测试、运行、打包、部署的过程。

构建传统项目和Maven项目的两种方式:

传统项目:

打开IDEA编写源代码和配置文件,对源代码进行编译,可以使用Junit进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。

Maven项目:

Maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。

清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署

好处:

可以通过命令完成项目构建。(测试:使用 mvn tomcat:run 的命令来发布运行项目)Maven对每个构建阶段进行规范,有利于大型团队协作开发。

4.Maven的应用场景

开发人员只需要按照Maven标准的目录结构进行开发即可,然后提交代码。在测试服务器上拉取Java源码,然后可以使用Maven的自动化项目构建完成项目的清理、编译、测试、打包、安装、部署等。

5.为什么使用Maven

IDE\Eclipse\IDEA

手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成

每个人的IDE配置都不同,本地代码换个地方编译容易出错
Ant

没有一个约定的目录结构

必须明确让Ant做什么、什么时候做,然后编译、打包

没有生命周期,必须定义目标及其实现的任务序列

没有集成依赖管理
Maven

拥有约定,知道你的代码在哪里,放到哪里去

拥有一个生命周期,例如执行 mvn install 就可以自动执行编译、测试、打包等构建过程

只需要定义一个 pom.xml ,然后把源码放到默认的目录,Maven 帮你处理其他事情

拥有依赖管理、仓库管理

6.Maven模型
7.Maven仓库概念
7.1.何为Maven仓库

用来统一存储所有Maven共享构建的位置就是仓库

7.2.仓库的分类

7.2.1.本地仓库

~/.m2/repository/ 可修改

每个用户只有一个本地仓库
7.2.2.远程仓库

中央仓库:Maven默认的远程仓库

私服:一种特殊的远程仓库,它是架设在局域网内的仓库

相关推荐
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 13 章 MCP 客户端:传输、工具聚合与命名冲突
java·人工智能·开源