0
点赞
收藏
分享

微信扫一扫

Maven 基本使用及依赖管理。


目录

​​一、Maven 基本介绍​​

​​ 1、主要功能​​

 ​​2、标准化的项目结构​​

​​ 3、基本介绍​​

 ​​4、仓库 ​​

​​二、Maven 安装配置​​

​​1、下载安装​​

​​2、配置环境变量​​

​​3、Maven 基本使用​​

​​三、IDEA中使用Maven​​

​​1、IDEA中配置Maven​​

​​2、Maven坐标​​

​​3、创建及导入项目​​

​​4、配置 Maven-Helper 插件​​

 ​​四、依赖管理​​

​​1、依赖配置​​

​​2、使用坐标导包​​

​​3、依赖范围​​

 ​​五、生命周期​​

​​ 1、Maven 生命周期​​

​​2、插件​​

一、Maven 基本介绍

 1、主要功能

Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)
  • 提供了一套依赖管理机制

2、标准化的项目结构:

        项目结构我们都知道,每一个开发工具(IDE )都有自己不同的项目结构,它们互相之间不通用。我再 eclipse 中创建的目录,无法在idea 中进行使用,这就造成了很大的不方便,

而 Maven 提供了一套标准化的项目结构,所有的 IDE 使用 Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以通用。



二、Maven 安装配置

1、下载安装

        下载压缩包,然后解压 (如:apache-maven-3.6.1.rar) 既安装完成,建议解压缩到没有中文、特殊字符的路径下。

解压缩后的目录结构如下:

Maven 基本使用及依赖管理。_生命周期_12


  ▷ bin目录 : 存放的是可执行命令。mvn 命令重点关注。
  ▷ conf目录 :存放Maven的配置文件。`settings.xml` 配置文件后期需要修改。
  ▷ lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。

2、配置环境变量

▷  `此电脑` 右键  -->  属性 -->  `高级系统设置`  -->  `高级`  -->  `环境变量`

Maven 基本使用及依赖管理。_java_13

Maven 基本使用及依赖管理。_maven_14

▷ 在 `Path` 中进行配置:

Maven 基本使用及依赖管理。_java_15

▷ 打开命令提示符进行验证,出现如图所示表示安装成功

Maven 基本使用及依赖管理。_jar包_16

▷ 配置本地仓库


三、IDEA中使用Maven

1、IDEA中配置Maven

Maven 基本使用及依赖管理。_jar包_27

Maven 基本使用及依赖管理。_jar包_28

四、依赖管理

1、依赖配置

▶ 依赖配置

 ● 依赖指当前项目运行所需要的 jar 包, 一个项目可以设置多个依赖

 ● 格式:


<!-- 设置当前项目所依赖的所有 jar--> <dependencies> <!-- 设置具体依赖--> <dependency> <!-- 设置依赖所属群组id--> <groupId>junit</groupId> <!-- 依赖所属项目id--> <artifactId>junit</artifactId> <!-- 依赖版本号--> <version>4.12</version> </dependency> </dependencies>

▶ 依赖传递

 ● 依赖具有传递性:

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

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

Maven 基本使用及依赖管理。_jar包_43



▶ 依赖传递冲突

 ● 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高

 ● 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

 ● 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

Maven 基本使用及依赖管理。_maven_44


▶ 可选依赖

 可选依赖指对外隐藏当前所依赖的资源--不透明


<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <optional>true</optional> </dependency>



▶ 排除依赖

 排除依赖指主动排除依赖资源,被排除 的资源无需指定版本--不需要


<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>


2、使用坐标导包

        在项目的 pom.xml 中编写 <dependencies> 标签,在 <dependencies> 标签中 使用 <dependency> 引入坐标,定义坐标的 groupId,artifactId,version

Maven 基本使用及依赖管理。_生命周期_45

点击刷新按钮,使坐标生效

Maven 基本使用及依赖管理。_生命周期_46

注意:
  ▷ 具体的坐标我们可以到网站进行搜索:​​​https://mvnrepository.com/​​


▶ 快捷方式导入jar包的坐标

在 pom.xml 中 按 alt + insert,选择 Dependency

Maven 基本使用及依赖管理。_java_47


在弹出的面板中搜索对应坐标,然后双击选中对应坐标,点击刷新按钮,使坐标生效

Maven 基本使用及依赖管理。_jar包_48

▶ 自动导入设置

 选择 IDEA中 File --> Settings

Maven 基本使用及依赖管理。_maven_49

在弹出的面板中找到 Build Tools

Maven 基本使用及依赖管理。_java_50

选择 Any changes,点击 ok 即可生效


3、依赖范围

        通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。如下图所示给 `junit` 依赖通过 `scope` 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

Maven 基本使用及依赖管理。_maven_51

 那么 `scope` 都可以有哪些取值呢?

 作用范围:

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

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

        ● 是否参与打包 (package 指令范围内)

Maven 基本使用及依赖管理。_java_52

 ▷ compile :作用于编译环境、测试环境、运行环境。
 ▷ test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值。
 ▷ provided :作用于编译环境、测试环境。我们后面会学习 `servlet-api` ,在使用它时,必须将 `scope` 设置为该值,不然运行时就会报错。
 ▷ runtime  : 作用于测试环境、运行环境。jdbc驱动一般将 `scope` 设置为该值,当然不设置也没有任何问题 。

 ▷ 注意:
    如果引入坐标不指定 `scope` 标签时,默认就是 compile  值。以后大部分jar包都是使用默认值。


▶ 依赖范围传递性

 带有依赖范围的资源进行传递,作用范围受到影响。

Maven 基本使用及依赖管理。_maven_53


五、生命周期

 1、Maven 生命周期

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件。Maven 对项目构建的生命周期划分为3套:

   ▷ clean :清理工作。
   ▷ default :核心工作,例如编译,测试,打包,安装等。
   ▷ site : 产生报告,发布站点等。这套声明周期一般不会使用。

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:

Maven 基本使用及依赖管理。_maven_54


   当我们执行 `install`(安装)命令时,它会先执行 `compile`命令,再执行 `test ` 命令,再执行 `package` 命令,最后执行 `install` 命令。

   当我们执行 `package` (打包)命令时,它会先执行 `compile` 命令,再执行 `test` 命令,最后执行 `package` 命令。

 默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:

Maven 基本使用及依赖管理。_maven_55


▶ clean 生命周期

      ● pre-clean :执行一些需要在clean 之前完成的工作

      ● clean :移除所有上一次构建生成的文件

      ● post : 执行一些需要在clean 之后立刻完成的工作


▶ site 构建生命周期

      ● pre-site : 执行一些需要在生成站点文档之前完成的工作

      ● site :生成项目的站点文档

      ● post-site :执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

      ● site-deploy :将生成的站点文档部署到特定的服务器上


▶ default 构建生命周期

Maven 基本使用及依赖管理。_jar包_56


2、插件

▶ 插件

  ● 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能

  ● 默认maven在各个生命周期上绑定有预设的功能

  ● 通过插件可以自定义其他功能


<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build>

Maven 基本使用及依赖管理。_生命周期_57



举报

相关推荐

0 条评论