JavaWeb-17-Maven依赖管理

Maven依赖管理

1. 依赖配置

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

  • 配置:

    1. pom.xml 中编写 <dependencies> 标签
    2. <dependencies> 标签中 使用 <dependency> 引入坐标
    3. 定义坐标的groupId,artifactId,version
    4. 点击刷新按钮,引入最新加入的坐标
      image-20230826161247437
      image-20230826161349887
  • 注意

    • 如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会比较耗时,耐心等待)

    • 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。

      image-20230826161729927

      image-20230826161829783

      image-20230826161910998


2. 依赖传递

  • 依赖具有传递性:

image-20230826162039694

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

    image-20230826162315566

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

    image-20230826162836577


实验:
(1) 直接依赖

image-20230826163503816

image-20230826163627745

image-20230826163726544

在这里插入图片描述


(2) 间接依赖

image-20230826164753386

image-20230826165321507

image-20230826165420016


排除依赖:
  • 主动断开依赖的资源,被排除的资源无需指定版本。

    image-20230826170217102

    image-20230826170303880


3. 依赖范围

  • 依赖的jar包,默认情况下,可以在任何地方使用。可以通过 <scope>…</scope> 设置其作用范围。
  • 作用范围:
    1. 主程序范围有效。(main文件夹范围内)
    2. 测试程序范围有效。(test文件夹范围内)
    3. 是否参与打包运行。(package指令范围内)
scope值主程序测试程序打包(运行)范例
compile(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动
(1)compile(默认)
  • 可以在任何地方使用(开发中常用):

image-20230826170620894

image-20230826170823285

image-20230826170933617

  • pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

   <!-- 项目坐标(项目描述信息) -->
   <groupId>com.app</groupId>
   <artifactId>maven-project01</artifactId>
   <version>1.0-SNAPSHOT</version>

   <name>maven-project01</name>
   <url>http://maven.apache.org</url>

   <!-- 配置 -->
   <properties>
       <!-- 当前项目源码当中所使用的jdk版本 -->
       <maven.compiler.source>11</maven.compiler.source>
       <!-- 当前项目打包时所使用的jdk版本 -->
       <maven.compiler.target>11</maven.compiler.target>
   </properties>

   <dependencies>
       <dependency>
           <groupId>ch.qos.logback</groupId>
           <artifactId>logback-classic</artifactId>
           <version>1.2.3</version>
       </dependency>
   </dependencies>

   <!-- 打包插件 -->
   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-assembly-plugin</artifactId>
               <version>2.4.1</version>
               <configuration>
                   <descriptorRefs>
                       <descriptorRef>jar-with-dependencies</descriptorRef>
                   </descriptorRefs>
               </configuration>
               <executions>
                   <execution>
                       <id>make-assembly</id>
                       <phase>package</phase>
                       <goals>
                           <goal>single</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>
</project>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)test
  • 只能在测试程序中有效:

    image-20230826173528395

    image-20230826173748131

    image-20230826173826615

    image-20230826173926150

(3)provided
  • 可以在主程序和测试程序中有效:验证方式与前面一样。
(4)runtime
  • 可以在测试程序和打包中有效:验证方式与前面一样


4. 生命周期

(1)介绍
  • Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

image-20230826174038816

  • Maven中有3套相互独立的生命周期:

    1. clean:清理工作。
    2. default:核心工作,如:编译、测试、打包、安装、部署等。
    3. site:生成报告、发布站点等。
  • 每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。别看到那么多就慌了,常用的也就是标红的这5个生命周期。

image-20230826174108300


(2)阶段
  • 生命周期阶段

    image-20230826174133196

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

    • clean是属于clean那一套的生命周期;
    • compile、test、package、install是属于default那一套的生命周期
    • 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。

(3)执行生命周期

执行指定生命周期的两种方式

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

    1. clean

      image-20230826185154066

      image-20230826185229427


    2. compile

      image-20230826185410946


    3. test

      image-20230826185557823

      image-20230826190146658

      image-20230826190253376


    4. package

      image-20230826190440778


    5. install

      image-20230826190958230

      image-20230826191121684

      image-20230826191059302

    6. 跳过某个生命周期

      image-20230826191446503

      image-20230826191229937

      image-20230826191305094


② 命令执行:
  • 在命令行中,通过命令执行。

    image-20230826185038959


(4)抽象概念
  • Maven的生命周期以及生命周期的各个阶段都是抽象的概念。

    image-20230826192654920

    • 它并不是执行具体的操作,而是由与其绑定的maven插件来完成的,因为maven本身就是个插件执行框架。
    • 因此所有的工作都是由插件来完成的。

  • IDEA的Maven面板:

    image-20230826192713281

    • Lifecycle:生命周期的各个阶段
    • Plugins:与生命周期各个阶段绑定的插件
    • 当双击Lifecycle中的各个阶段,在运行时最终是由Plugins中的插件来完成对应的工作的

(5)小结
  1. 重点关注maven生命周期的哪些阶段?
    • clean:清理
    • compile:编译
    • test:测试
    • package:打包
    • install:安装

它并不是执行具体的操作,而是由与其绑定的maven插件来完成的,因为maven本身就是个插件执行框架。

  • 因此所有的工作都是由插件来完成的。

  • IDEA的Maven面板:

    image-20230826192713281

    • Lifecycle:生命周期的各个阶段
    • Plugins:与生命周期各个阶段绑定的插件
    • 当双击Lifecycle中的各个阶段,在运行时最终是由Plugins中的插件来完成对应的工作的

(5)小结
  1. 重点关注maven生命周期的哪些阶段?
    • clean:清理
    • compile:编译
    • test:测试
    • package:打包
    • install:安装
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值