Maven

85 阅读4分钟

Maven

1 概述

1.1 定义

​ Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

1.2 作用

​ 1) 依赖管理 (管理项目依赖的资源(jar包),避免版本冲突问题)

​ 2) 统一项目结构 (当使用不同的开发工具 (如:Eclipse、Idea),创建项目工程时, Maven会帮我们自动生成统一、标准的项目目录结构)

​ 3) 项目构建 (maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式)

1.3 Maven模型
1.3.1 项目对象模型 (Project Object Model)

​ 指将项目抽象成一个对象模型,有自己专属的坐标 ((jar包)的唯一标识,通过坐标可以定位到所需资源(jar包)位置)

1.3.2 依赖管理模型(Dependency)

​ 依赖管理模型,是使用坐标来描述当前项目依赖哪些第三方jar包

1.3.3 构建生命周期/阶段(Build lifecycle & phases)

​ 完成标准化构建流程 。当需要编译时,Maven提供了一个编译插件供我们使用;当我们需要打包,Maven就提供了一个打包插件供我们使用

1.4 Maven仓库 (Repository)
1.4.1 作用

​ 仓库的本质就是一个目录(文件夹),这个目录被用来存储管理开发中所有依赖(就是jar包)和插件

1.4.2 仓库类型

​ - 本地仓库: 自己计算机上的一个目录(用来存储jar包)

​ - 中央仓库: 由Maven团队维护的全球唯一的。

​ - 远程仓库(私服):一般由公司团队搭建的私有仓库

jar包的查找顺序则变为: 本地仓库 --> 远程仓库--> 中央仓库

1.5 Maven的依赖管理
1.5.1 依赖配置
1.5.2 依赖

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

​ 例如:在当前工程中,我们需要用到logback来记录日志,此时就可以在maven工程的pom.xml文件中,引入logback的依赖。具体步骤如下:

  1. 在pom.xml中编写标签
  2. 在标签中使用引入坐标
  3. 定义坐标的 groupId、artifactId、version
  4. 点击刷新按钮,引入最新加入的坐标
<dependencies>
    //坐标
    <!-- 第1个依赖 : logback -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
    </dependency>
    <!-- 第2个依赖 : junit -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.10.0</version>
            <scope>test</scope>
        </dependency>
</dependencies>
1.6 依赖传递
1.6.1 依赖具有传递性

​ 依赖传递可以分为:

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

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

    由于maven的依赖具有传递性,当在pom.xml配置文件中添加了jar的依赖坐标, jar包会自动把所依赖的其他jar包也一起导入

1.6.2 排除依赖

​ 指主动断开依赖的资源。(被排除的资源无需指定版本)

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven-projectB</artifactId>
    <version>1.0-SNAPSHOT</version>
   
    <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
    	<exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>
1.7 依赖范围

​ 在项目中导入依赖的jar包后,默认情况下,可以在任何地方使用。

​ 如果希望限制依赖的使用范围,可以通过标签设置其作用范围。

​ 作用范围:

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

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

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

scope主程序测试程序打包(运行)范例
compile(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动
1.8 生命周期

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

1.8.1 生命周期之clean

​ 清理工作。

1.8.2 生命周期之default

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

1.8.3 生命周期之site

​ 生成报告、发布站点等。

1.8.4 生命周期的顺序

生命周期的顺序是:clean --> validate --> compile --> test --> package --> verify --> install --> site --> deploy

需要关注就是:clean --> compile --> test --> package --> install

1.8.5 执行
  1. 在idea工具右侧的maven工具栏中,选择对应的生命周期,双击执行
  2. 在DOS命令行中,通过maven命令执行

2 配置

2.1 固定JDK版本和字体
<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
2.2 查找Jar包的网址
 https://mvnrepository.com
2.3 MavenProject文件

​ src==>man==>java (主要写的程序内容) + resources (核心配置文件和静态界面)

​ test==>java (测试写的程序内容) + resources (核心配置文件和静态界面)

​ pox.xml: 用来管理jar包, 配置管理依赖 (dependency, exclusion, scope)