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

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

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

代表跳过测试阶段

相关推荐
启航挨踢26 分钟前
java学习电子书推荐
java
wgslucky27 分钟前
Dubbo报错:module java.base does not “opens java.lang“ to unnamed module
java·开发语言·dubbo
DougLiang2 小时前
关于easyexcel动态下拉选问题处理
java·开发语言
mochensage2 小时前
C++信息学竞赛中常用函数的一般用法
java·c++·算法
计蒙不吃鱼2 小时前
一篇文章实现Android图片拼接并保存至相册
android·java·前端
小海编码日记2 小时前
Java八股-JVM & GC
java
全职计算机毕业设计3 小时前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
东阳马生架构3 小时前
商品中心—1.B端建品和C端缓存的技术文档
java
Chan163 小时前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
LucianaiB3 小时前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库