Maven 基础知识

1. Maven
1.1 概述

apache 旗下的一个开源项目

一款用于管理和构建 Java 项目的工具

(Apache 软件基金会,成立于 1997年7月

是世界上最大最受欢迎的开源软件基金会

是一个专门为支持开源项目而生的非营利性组织 )

1.2 作用
1.2.1 依赖管理

若不使用 Maven ,需要手动下载并导入相关 jar 包到项目中

倘若对部分 jar 包进行升级,相关依赖的 jar 包也要升级

这些都非常繁琐

而 Maven 可以方便快捷的管理项目以来的资源( jar 包),避免版本冲突问题

1.2.2 统一项目结构

不同Java集成环境开发工具构建的 Java 项目的目录结构有差异

以致创建的 Java 项目不能导入到其他开发工具中

而 Maven 可以提供统一标准的项目结构

1.2.3 项目构建

每个项目都要经过编译 测试 打包 发布

大型项目的模块较多,执行这些流程较繁琐

而 Maven 提供了标准的构建流程,可以快速完成编译 测试 打包 发布的工作

1.3 介绍

Maven 基于项目对象模型(Project Object Model),通过一小段描述信息来管理项目的构建

Maven 模型分三部分:

构建生命周期阶段:通过各种各样的插件完成各种功能

项目对象模型:通过 pom.xml 文件中配置的信息描述 Maven 工程

依赖管理模型:若当前的项目工程中还需要其他依赖资源,就可以在 pom.xml 文件中添加添加依赖管理模型

添加的依赖从本地仓库中下载,本地仓库没有会连接私服(远程仓库)

私服没有会连接中央仓库

再从中央仓库将相关 jar 包下载到私服

最后从私服下载到本地仓库

1.4 安装

安装步骤: 解压 配置本地仓库 配置阿里云私服 配置环境变量

前三个步骤网络上有很多教程,这里不详细叙述

1.4.1 配置环境变量

配置环境变量为单个项目配置 / 配置Maven 环境(全局)两种

一般我们配置 Maven 的全局环境变量

1.5 创建 Maven 项目

在 Java 包下创建 Java 文件进行测试

1.6 Maven 坐标
1.6.1 概述

是资源的唯一标识,通过坐标可以唯一定位资源位置

通过坐标定义项目或引入项目中需要的依赖

1.6.2 主要组成

groupid:定义当前 Maven 项目隶属组织名称(通常是域名反写)

artifactid:定义当前 Maven 项目名称(通常是模块名称)

version:定义当前项目版本号

1.7 导入 Maven 项目

选择右侧 Maven 面板,点击 " + " 号

选中对应项目的" pom.xml " 文件,双击即可

2. 依赖管理
2.1 依赖配置

依赖:当前项目运行所需要的 jar 包,一个项目可以引入多个依赖

依赖第一次导入无法找到:

2.2 依赖传递

依赖具有传递性

如上,只引入一个 jar 包,最后却出现了三个 依赖

依赖分为直接依赖,间接依赖

直接依赖:当前项目中通过依赖配置建立的依赖关系

间接依赖:被依赖的资源若依赖其他资源,当前项目间接依赖其他资源

2.2.1 展示依赖

图表形式展示依赖关系:

2.2.2 排除依赖

项目 A 依赖 项目 B ,项目 B 依赖 jar 包

但项目 A 不想依赖项目 B 的 jar 包

2.3 依赖范围

依赖的 jar 包

默认情况下,可以在任何地方使用

主程序范围有效:main 文件夹范围内

测试程序范围有效:test 文件夹范围内

是否参与打包运行:package 指令范围内

可以通过 <scope> ... <scope> 设置其作用范围

2.4 生命周期

生命周期:为了对所有的 maven 项目构建过程进行统一和抽象

Maven 中有 3相互独立的生命周期:

clean:清理工作

**default:**核心工作,如:编译,测试,打包,安装,部署等

site:生成报告,发布站点等

生命周期涉及的阶段很多,其中 5 个是较为重要的

clean:移除上一次构建生成的文件

compile:编译项目源代码

test:使用合适的单元测试框架运行测试

package:将编译后的文件打包,如 jar,war 等

install:安装项目到本地仓库

2.4.1 阶段顺序

阶段是有顺序的,后面的阶段依赖前面的阶段

即在同一套生命周期中, 运行后面的阶段,其前面的阶段都会运行

如下,运行 package 阶段,会先运行 compile 阶段,test 阶段

因为他们都在 default 这同一生命周期中

运行 install 阶段,不会运行前面的 clean ,compile,test,package 阶段

因为他们不在同一生命周期中

2.4.2 执行指定生命周期

方式一:选中对应生命周期,双击执行

clean:移除上一次构建生成的文件

compile:编译项目源代码

test:使用合适的单元测试框架运行测试

package:将编译后的文件打包,如 jar,war 等

install:安装项目到本地仓库

方式二:在命令行执行

相关推荐
阿常111 小时前
解决Maven项目中报错“java不支持版本6即更高的版本 7”
java·开发语言·maven
汤姆大聪明1 小时前
Spring MVC入门
java·spring·mvc
Stay Passion2 小时前
Java 实用工具类:Apache Commons IO 的 IOUtils
java·开发语言·apache
今天也是元气满满的一天呢3 小时前
java学习之数据结构:一、数组
java·数据结构·学习
heyCHEEMS4 小时前
最大子段和 Java
java·开发语言·算法
-曾牛4 小时前
探索 Spring AI 的 ChatClient API:构建智能对话应用的利器
java·人工智能·spring boot·后端·spring·springai·ai指南
白露与泡影4 小时前
使用OAuth2保护Spring AI MCP服务!
java·后端·spring
magic 2454 小时前
Spring 命名空间注入:p、c 与 .util 的深度解析
java·前端·spring
橘猫云计算机设计5 小时前
基于springboot的金院银行厅预约系统的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·爬虫·spring·毕业设计
Aurora_NeAr5 小时前
Spring IoC容器的设计与实现
java·后端·spring