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工具栏,选中对应的生命周期,双击执行。

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

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

代表跳过测试阶段

相关推荐
小筱在线37 分钟前
SpringCloud微服务实现服务熔断的实践指南
java·spring cloud·微服务
luoluoal42 分钟前
java项目之基于Spring Boot智能无人仓库管理源码(springboot+vue)
java·vue.js·spring boot
ChinaRainbowSea1 小时前
十三,Spring Boot 中注入 Servlet,Filter,Listener
java·spring boot·spring·servlet·web
小游鱼KF1 小时前
Spring学习前置知识
java·学习·spring
扎克begod1 小时前
JAVA并发编程系列(9)CyclicBarrier循环屏障原理分析
java·开发语言·python
青灯文案11 小时前
SpringBoot 项目统一 API 响应结果封装示例
java·spring boot·后端
我就是程序猿1 小时前
tomcat的配置
java·tomcat
阳光阿盖尔1 小时前
EasyExcel的基本使用——Java导入Excel数据
java·开发语言·excel
二十雨辰1 小时前
[苍穹外卖]-12Apache POI入门与实战
java·spring boot·mybatis
程序员皮皮林1 小时前
开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)
java·pdf·开源·apache