Maven

Maven入门

介绍

  • Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建

  • 作用

    • 方便的依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
    • 统一的项目结构:提供标准、统一的项目结构
    • 标准的项目构建流程:标准跨平台的自动化项目构建方式

    一个Maven项目的结构:

在这里插入图片描述

一、Maven的模型

  • Maven模型分为三个部分:

在这里插入图片描述

1、构建生命周期/阶段

  • 通过Maven中提供的各种各样的插件,我们就可以完成对应的功能(比如:编译插件、测试插件、打包插件等等)通过这些插件就可以完成Maven项目的标准化构建,而在执行这些构建操作的时候,不同的阶段就会有不同的文件产生(比如:编译后产生的字节码文件、打包之后就会有打包之后的jar文件产生等等),这些文件都放在了target目录下。

2、项目对象模型阶段(POM

  • 这是Maven中核心的一块功能
  • 项目对象模型是指在Maven之后可以通过pom.xml当中配置的一小段信息,来描述这个Maven工程

在这里插入图片描述

这三项信息称为Maven的坐标,通过这个坐标就可以唯一的标识以及定位这个项目

  • 如果当前这个Maven工程中还需要依赖一些其他的资源,我们就可以在pom.xml文件中添加依赖管理模型

3、依赖管理模型(Dependency

在这里插入图片描述

  • 通过dependency这个标签,在指定这个依赖的坐标,当我们添加了这个依赖的坐标,Maven就会自动的从仓库(本地仓库)中查找这个依赖,若没有找到,如果配置了国内的私服(远程仓库)则会快速的从这个仓库中下载,如果这个私服中也没有,则私服会从国外的中央仓库中下载(因此私服可以越用越方便);如果没有配置 国内的私服,则会直接从国外的中央仓库中下载(跨国下载,比较慢,不方便)。
仓库:

用于存储资源,管理各种jar包。

  • 本地仓库:自己计算机上的一个目录
  • 中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

可以试试把仓库文件夹的user访问权限的完全控制和修改都打勾,然后再maven哪里刷新一下,我这里是这样解决的

二、Maven坐标

  • 什么是坐标?
    • Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
    • 使用坐标来定义项目或引入项目中需要的依赖
  • Maven坐标主要组成
    • groupld:定义当前Maven项目隶属组织名称(通常是域名反写)
    • artifactld:定义当前Maven项目名称(通常是模块名称)
    • Version:定义当前项目版本号

三、依赖管理

1、依赖配置:

  • 依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
  • 配置
    • pom.xml中编写<dependencies>标签
    • <dependencies>标签中使用<dependency>引入坐标
    • 定义坐标的groupld, artifactld, version
    • 点击刷新按钮,引入最新键入的坐标

注意事项

  • 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖
  • 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索

2、依赖传递:

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

在这里插入图片描述

如果又不想依赖的间接依赖,可以使用排除依赖

排除依赖:

在这里插入图片描述

如果projectA不想依赖projectB中的junit依赖,在依赖projectB的代码中的最后写上排除依赖exclusions

<dependency>
            <groupId>com.itheima</groupId>
            <artifactId>maven-projectB</artifactId>
            <version>1.0-SNAPSHOT</version>

            <!--排除依赖-->
            <exclusions>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
            </exclusions>
</dependency>

刷新后可得:

在这里插入图片描述

已经去掉了junit依赖

3、依赖范围:

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

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包运行(package指令范围内)

示例

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
    		<scope>test</scope>
</dependency>
scope值主程序测试程序打包(运行)范例
compile(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动

四、生命周期

  • Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
  • Maven中有3套相互独立的生命周期:
    • clean:清理工作
    • default:核心工作,如:编译、测试、打包、安装、部署等
    • site:生成报告、发布站点等

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

在这里插入图片描述

  • 也就是说每套生命周期都是从上往下执行的
  • 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行

主要的五个生命周期阶段:

  • clean:移除上一次构建生成的文件
  • compile:编译项目源代码
  • test:使用适合的单元测试框架运行测试(junit
  • package:将编译后的文件打包,如:jar、war
  • install:安装项目到本地仓库

执行生命周期的两种方式:

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

在这里插入图片描述

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

打开项目文件位置:

在这里插入图片描述

右键空白处,在终端中打开

在这里插入图片描述

在这里插入图片描述

输入mvn + 想要实现的阶段即可执行,回到idea中刷新即可实现操作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值