Java Web —— 第四天(Maven)

Maven是什么

Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)

POM (ProjectObject Model): 项目对象模型

Maven的作用

项目构建:提供标准的、跨平台的自动化项目构建方式

依赖管理:方便快捷的管理项目依赖的资源 (ar包),避免资源间的版本冲突问题

统一开发结构:提供标准的、统一的项目结构

Maven下载

官网: http://maven.apache.org/

下载地址: http://maven.apache.org/download.cgi

Maven安装

Maven属于绿色版软件,解压即安装

Maven环境变量配置

依赖Java,需要配置JAVA_HOME

设置MAVEN自身的运行环境,需要配置MAVEN_HOME

测试环境配置结果

MVN

Maven基础概念

仓库

用于存储资源,包含各种jar包

仓库:用于存储资源,包含各种iar包

仓库分类:

本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源

远程仓库:非本机电脑上的仓库,为本地仓库提供资源

中央仓库:Maven团队维护,存储所有资源的仓库

私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源

私服的作用:

保存具有版权的资源,包含购买或自主研发的iar

中央仓库中的iar都是开源的,不能存储具有版权的资源

一定范围内共享资源,仅对内部开放,不对外共享

配置Maven环境(当前工程)

选择IDEA中 File --> Settings --> Build,Execution,Deployment --> Build Tools --> Maven设置IDEA

使用本地安装的 Maven,并修改配置文件及本地仓库路径

配置Maven环境(全局)

IDEA 创建 Maven 项目

1.创建模块,选择Maven,点击Next

2.填写模块名称,坐标信息,点击finish,创建完成

3.编写 HelloWorld,并运行

坐标

什么是坐标?

Maven中的坐标用于描述仓库中资源的位置

https://repo1.maven.org/maven2

Maven坐标主要组成

groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如:orgmybatis)

artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)

version:定义当前项目版本号

找坐标

https://mvnrepository.com

Maven坐标的作用

使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

坐标的组成:组织ID 项目ID 版本号

Maven启动后,会自动保存下载的资源到本地仓库

默认位置

XML 复制代码
<localRepository>${user.home)/.m2/repository</localRepository>

当前目录位置为登录用户名所在目录下的.m2文件夹中

自定义位置

XML 复制代码
<localRepository>D:\studyApp\Maven\maven-repository</localRepository>

IDEA 导入 Maven 项目

**方式一:**打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可

如果没有看到

推荐将导入项目放同级目录

粘贴

**方式二:**打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可

Maven项目构建命令

Maven构建命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

mvn compile #编译

clean mvn #清理

test mvn #测试

mvn package #打包

mvn install #安装到本地仓库

依赖配置

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

配置:

1.在 pom.xml 中编写**<dependencies>** 标签

2.在**<dependencies>** 标签中 使用**<dependency>**引入坐标

3.定义坐标的groupld,artifactld,version

4.点击刷新按钮,引入最新加入的坐标

XML 复制代码
<dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

注意事项

如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程

比较耗时,耐心等待)

如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索

依赖传递

依赖具有传递性

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

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

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过 <scope>...</ scope > 设置其作用范围作用范围:

主程序范围有效。 (main文件夹范围内)

测试程序范围有效。 (test文件夹范围内)

是否参与打包运行。(package指令范围内)

示例:

仅在单元测试中有效

生命周期

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

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

clean:清理工作。

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

site:生成报告、发布站点等。

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段

注意事项

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

执行指定生命周期的两种方式

在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。

在命令行中,通过命令执行。

如果想跳过某一阶段 只执行后面的操作:

代表跳过测试阶段

相关推荐
s:10327 分钟前
【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构
java·开发语言
南山十一少3 小时前
Spring Security+JWT+Redis实现项目级前后端分离认证授权
java·spring·bootstrap
427724005 小时前
IDEA使用git不提示账号密码登录,而是输入token问题解决
java·git·intellij-idea
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
李长渊哦5 小时前
常用的 JVM 参数:配置与优化指南
java·jvm
计算机小白一个5 小时前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
南宫生8 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
计算机毕设定制辅导-无忧学长9 小时前
Maven 基础环境搭建与配置(一)
java·maven
风与沙的较量丶10 小时前
Java中的局部变量和成员变量在内存中的位置
java·开发语言
m0_7482517210 小时前
SpringBoot3 升级介绍
java