【javaWeb &第四篇】后端-Maven详细入门教程

Maven入门教程

前言

本文是作者通过学习过程中的学习笔记,希望帮助大家,同时大家可以搭配黑马程序员进行学习

Maven配置

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

  • 作用:
  1. 方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题,需要下载的依赖在pom.xml中进行声明就好,便捷好用
  2. 统一的目录结构(将多个软件不能够互相打开的问题做出很好的解决方案)
  3. 标准跨平台(linux,Windows,MacOS)的自动化构建方式

    提供统一的,标准的构建流程以及简约的开发命令
    举例:
    比如要将maven中的文件进行编译,在右侧的maven的编辑中点击compile进行编译,编译好的文件会自动创建并存储到target目录中,而打包直接点击package就行
  • maven整体结构

    maven中生命周期中的各个操作,比如编译,打包等都是通过对应的插件来执行完成的,不同的操作会产生对应的文件。

    pom.xml是maven的核心,对maven工程进行描述,在文件中进行依赖管理,项目资源存储在仓库当中,通过pom.xml文件进行资源的调用

  • 仓库

    本地仓库:本地计算机上的目录文件

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

    https://repol.maven.org/maven2/

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

    仓库运转:

    当本地仓库中没有对应文件,本地仓库就会在远程仓库中进行查找,如果远程仓库中也没有,就会在中央仓库中进行查找(外网速度慢),如果找到会返回到远程仓库中,远程仓库保存下来,通过也返回到本地仓库当中。

  • Maven安装

    请参考Maven安装篇

  • idea中配置maven环境

    在build中配置maven,maven的安装目录,以及maven settings配置文件的地址,以及maven的本地仓库

  • 创建Maven

    name:项目名称

    Groupld:组织名称(确定java文件包下的目录结构)

    artifactld:模块名(确定该Maven处在的目录文件)

    组织名称以及模块名还有版本号称为该Maven的坐标

    配置好之后:

    在pom.xml中存放工程信息:

java 复制代码
    <groupId>org.example</groupId>
    <artifactId>maven_heima</artifactId>
    <version>1.0-SNAPSHOT</version>

这个就是pom.xml中表示该Maven工程的坐标

java 复制代码
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

该标签下第一行表示项目源码使用的jdk版本,第二行表示该项目在打包的时候使用的jdk版本,第三行表示使用的字符

注意:在刚刚创建好的Maven工程的Test目录下没有配置文件目录,这是因为不常用就隐藏了,如果要调出,需要在Test下进行创建文件夹,这时会进行提示

这时候点击会出现resources文件

  • Maven坐标

    Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置

    使用坐标来定义项目或引入项目中需要的依赖

    坐标组成:

    groupld:通常是域名反写

    artifactld:定义当前Maven项目名称(通常是模块名称)

    version:定义当前的版本号

  • 如何导入Maven工程

    方式一:

    打开idea,点击右侧的Maven项目工具栏,点击+号,选中对应的pom.xml文件

    方式二:通过菜单中的模块进行添加

Maven依赖管理

  • 依赖配置
    依赖:指的是项目在运行时所需要的jar包,一个项目中可以引入多个依赖

如何配置:

  1. 在pom.xml中编写<dependencies>标签
  2. <dependencies>标签中使用<dependency>中引入坐标
  3. 定义坐标的groupld,artifactld,version
  4. 点击刷新按钮,引入最新加入的坐标

如图所示就是创建依赖的过程,当输入完之后可以在右侧的Maven面板中查询项目的依赖是否成功添加,默认是没有添加的,因为需要进行重新加载

提供Maven仓库以供大家进行依赖查找:https://mvnrepository.com/

  • Maven依赖传递
    依赖具有传递性

    项目A需要项目B,当项目B需要依赖,所以当A导入依赖B的时候会自动将B所依赖的文件自动添加,称为项目依赖的传递性
    因为依赖的传递性所以依赖分为直接依赖和间接依赖
    如果不想要一个依赖所附带的依赖可以使用排除依赖:
java 复制代码
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>

<version>后接着写入排除依赖标签,并重新加载

  • 可视化查看项目的依赖关系

    在pom.xml文件中点击右键选择diagrams,选择show Dependencies此时会以图表的形式显示依赖之间的关系

  • 依赖范围

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

    作用范围:

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

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

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

    scope取值表:

    Maven的生命周期

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

    Maven有三套独立的生命周期:

    clean:清理工作(主要清理项目构建后的一些字节文件,打包文件等)

    default:核心工作,如:编译,测试,打包,安装,部署等;

    site:生成报告,发布站点等

    每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段, 在同一套生命周期中,运行后面的阶段,前面的阶段也会运行


常见的生命周期阶段

在idea的Maven面板栏中也可以查看常见的生命周期阶段

  • 执行生命周期阶段
    方式一:通过Maven面板栏进行执行
    方式二:通过命令执行,在命令行中进入到maven项目目录下执行
    mvn clean
    mvn complie

如何绕过某一测试阶段:

进行点击跳过测试阶段

maven工程本身就是一个插件项目,所有的操作都是由插件完成的,每一个阶段操作都对应一个插件

相关推荐
路在脚下@8 分钟前
Spring如何处理循环依赖
java·后端·spring
一个不秃头的 程序员30 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
丁总学Java42 分钟前
--spring.profiles.active=prod
java·spring
上等猿1 小时前
集合stream
java
java1234_小锋1 小时前
MyBatis如何处理延迟加载?
java·开发语言
菠萝咕噜肉i1 小时前
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
java·mybatis·框架·半自动
林的快手1 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
诸葛小猿1 小时前
maven的scope详解
maven·scope
向阳12182 小时前
mybatis 缓存
java·缓存·mybatis
上等猿2 小时前
函数式编程&Lambda表达式
java