大数据------JavaWeb------Maven(完整知识点汇总)

额外知识点

  • IDE
    • IDE是集成开发环境的缩写,它是一种软件应用程序,提供了编码、调试和部署软件的一站式解决方案。这些功能集成在一起,使开发人员能够在一个环境中完成整个软件开发过程,从编写代码到调试和测试,直到最终部署。常见的IDE包括Visual Studio、Eclipse、IntelliJ IDEA、MyEclipse等。

Maven基础

  • 定义

    • Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档,官网:http://maven.apache.org/
    • Maven是专门用于管理和构建Java项目的工具
  • 功能

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

      • 解释:你在myeclipse中写的项目在idea中就无法正常成功运行,原因是由于项目结构不一样(即目录不一样),而Maven解决了该问题

      在这里插入图片描述

    • 提供了一套标准化的构建流程(编译、测试、打包、发布、…)

      • 标准化构建流程如图所示,Maven提供了一套简单的命令来完成项目的构建

      在这里插入图片描述

    • 提供了一套依赖管理机制

      在这里插入图片描述

      • 依赖管理机制就是管理项目所依赖的第三方资源,比如:jar包、插件等等
      • 以往我们导入jar包的操作很繁琐(要先创建一个lib目录,然后将下载的jar包放入该目录下,最后将jar包Add as Library加入工作环境),而利用Maven即可不用这么繁琐
      • Maven使用标准的坐标配置来管理各种依赖,它只需要简单的配置就可以完成依赖管理
  • Maven模型

    在这里插入图片描述

    • 项目对象模型(Project Object Moudle)
    • 依赖管理模型(Dependency)
    • 插件(Plugin)
  • Maven仓库定义

    • 仓库(Repository)是用来存储项目依赖项(如库、框架、插件等)的地方。仓库是一个包含了各种Java类库和插件的中央集合,Maven通过仓库来查找、下载和管理项目所需的依赖项。

    • 解释:假设现在有个项目1,该项目需要一个jar包,首先Maven会先去本地仓库中寻找,若本地仓库中没有,则会去中央仓库中寻找,若中央仓库中有想要的jar包,则Maven会自动将jar包下载到本地仓库中,此时项目即可利用该jar包进行工作。此时假设有个项目2,也需要项目1所需的jar包,由于项目1所需的jar包已经放到本地仓库中了,所以项目2可直接使用该jar包

      在这里插入图片描述

  • Maven仓库分类

    • 本地仓库:自己计算机上的一个目录
    • 中央仓库:由Maven团队维护的一个全球唯一的一个仓库(地址:https://repo1.maven.org/maven2/),放的基本上都是免费的开源的jar包
    • 远程仓库(私服):一般由公司团队搭建的私有仓库。(搭建的私有仓库除了会将中央仓库中的jar中均下载到私有仓库中,还会放一些自己写的jar包或有版权信息的jar包等)

    注意:

    ​ 1.当项目中使用坐标引入对应依赖的jar包后,首先会查找本地仓库中是否有对应的jar包,若有则在项目中直接引用;反之则会去中央仓库中下载对应的jar包到本地仓库

    ​ 2.若搭建远程仓库,则将来jar包的查找顺序变为:本地仓库>远程仓库>中央仓库

  • Maven坐标

    • Maven中的坐标是资源的唯一标识
    • 使用坐标来定义项目或引入项目中需要的依赖
  • Maven坐标的主要组成

    组成解释
    groupId为当前Maven项目隶属的 组织名称 (通常是域名反写,如:com.itheima)
    artifactId为当前Maven的项目名称 (通常是模块名称,如:order-service、goods-service)
    version定义当前的版本号
    scope定义依赖的作用范围

    在这里插入图片描述

Maven安装配置

  • Maven安装配置步骤

    1. 下载apache-maven-3.9.5.rar然后解压到自己想要安装的位置即可安装完整

    2. 配置环境变量MAVEN_HOME为安装路径的bin目录

      在这里插入图片描述

    3. 打开系统变量中的Path,将Maven加入,如图所示,然后一直单击确定即可

      在这里插入图片描述

      • 判断Maven是否配置成功:打开cmd输入命令mvn -version,若看到Maven的信息则代表配置成功,如图所示

      在这里插入图片描述

    4. 配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定的目录

      • 我为两个版本配置的本地仓库如下:
      <localRepository>F:\app\apache-maven-3.8.8\maven-repository</localRepository>
      
      <localRepository>F:\app\apache-maven-3.9.5\maven-repository</localRepository>
      
    5. 配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签:

      <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
      </mirror>
      

      在这里插入图片描述

Maven基本使用

Maven常用命令

命令解释
compile编译
clean清理
test测试
package打包
install安装

注意:使用命令前需要加上mvn,比如:mvn compile

  • 准备工作

    在这里插入图片描述

    1. 在项目MavenOne中的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.itheima</groupId><artifactId>maven-project</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><!-- 导入mysql驱动jar包--><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>
      </project>
      
    2. 该项目的src中有两个目录,分别为main(源代码目录)和test(测试代码目录)

      1. main中的代码如下

        在这里插入图片描述

      2. test中的代码如下

        在这里插入图片描述

    3. 在iml文件所在处打开Powershell窗口

      在这里插入图片描述

  • 编译

    • 在打开的Powershell窗口输入命令mvn compile

      注意:在刚配置完本地仓库时,由于仓库中无任何内容,所以在输入该命令后,会先下载所需的库(下载完成界面如图所示)以及插件,下载完成后再次输入该命令即可

      在这里插入图片描述

      • 输入mvn compile,若出现BUILD SUCCESS代表编译完成

        在这里插入图片描述

      • 编译完成后,在含有xml文件的文件夹目录内出现target目录,则进一步代表编译完成

        在这里插入图片描述

  • 清理

    • 在Powershell窗口输入命令mvn clean,即可将target目录删除

      在这里插入图片描述

    注意:第一次执行mvn clean命令时会先去下载对应的jar包和插件

  • 打包 —将java代码编译成的的字节码文件打包成一个jar包

    • 在Powershell窗口输入命令mvn package,执行成功后会重新生成一个target目录且该目录下有个jar包(注意第一次使用该命令时会先下载对应的插件和jar包)

      在这里插入图片描述

  • 测试 —自动测试test(测试代码目录)下的代码

    • 在Powershell窗口输入命令mvn test(第一次使用时会先下载对应的插件和jar包)

      在这里插入图片描述

  • 安装 —将当前的项目打包成一个jar包装到本地仓库中

    • 在Powershell窗口输入命令mvn install(第一次使用时会先下载对应的插件和jar包)

      在这里插入图片描述

Maven生命周期

  • 定义

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

    • clean:清理工作
    • default:核心工作,比如:编译、测试、打包、安装等等
    • site:产生报告,发布站点等等

    在这里插入图片描述

    注意:在上图中有三套生命周期,执行某一套生命周期后面的命令时,该套生命周期前的所有命令会自动执行,而不是其他套前面的命令自动执行

IDEA中使用Maven

IDEA配置Maven步骤

  • File→Settings→搜索maven

  • 设置IDEA使用本地安装的Maven并修改配置文件路径

    • Maven安装目录下的conf目录下的settings.xml属于全局配置,而用户目录的.m2目录下的settings.xml是属于当前用户配置(.m2目录下的settings.xml文件可能显示不出来但不代表在该目录下没有该文件),所以为了让idea中的maven配置并使用自己的全局配置需要以下几步:

    • 第一步:打开C盘→用户→用户名→.m2→将文件settings.xml改名为settingsdrop.xml(若无settings.xml文件则创建一个空的settingsdrop.xml文件即可),如图所示

      在这里插入图片描述

    • 第二步:File→Settings→按图示设置maven

    在这里插入图片描述

    • 第三步:File→New Projects Setup →Settings for New Projects →然后按照第二步图示进行设置即可完成IDEA的Maven配置

      在这里插入图片描述

      注意 :IDEA在使用Maven时会以.m2目录下settings.xml文件为准,若在.m2目录下没找到该文件才会去使用自己在IDEA中配置的自己安装的Maven目录下的conf目录下的settings.xml文件。所以第一步的作用就是迷惑IDEA,让它去.m2目录下找不到settings.xml文件,从而不得不使用自己安装的maven下的settings.xml文件

  • 示例:创建Maven Web项目成功后IDEA警告提示

    在这里插入图片描述

IDEA创建Maven项目

  • 创建Macven方式一

    • File→New→Project或Moudle,输入模块名,选择Maven,单击Create,如图二所示即创建成功

      在这里插入图片描述

      在这里插入图片描述

  • 创建Maven方式二

    • File→Project Structure→选择Modules→单击+→New Module,然后按照图示操作即可创建成功

      在这里插入图片描述

      在这里插入图片描述

  • 注意事项

    • 在以上两种创建方式中test测试用例目录下均没有配置文件resources,若需要配置文件则按图示操作即可创建配置文件目录

      在这里插入图片描述

IDEA导入Maven项目

  • 步骤

    • 单击IDEA右侧Maven面板→单击+号→选中对应项目的xml文件然后双击即可,如图所示

    在这里插入图片描述

    在这里插入图片描述

  • 若IDEA右侧没有Maven的标志,则按如图所示方式设置即可

    在这里插入图片描述

IDEA中使用Maven命令

  • 步骤

    • 单击IDEA右侧Maven面板→选中要执行Mavne命令的Maven项目→Lifecycle→双击要执行的命令即可,如图所示

      在这里插入图片描述

IDEA配置Maven-Helper插件

  • 步骤

    • File→Settings→Plugins→搜索Maven,选择Maven Helper安装,然后重启IDEA即可,如图所示

      在这里插入图片描述

  • 配置该插件的原因

    • 若Maven项目过多时,此时你使用IDEA右侧的Maven面板来执行Maven命令就很繁琐,所以配置该插件
  • 该插件使用方式

    • 右键要使用Maven命令的Maven项目→Run Maven→选择要使用的命令

      在这里插入图片描述

      注意:从截图中可看出该插件可进行断点调试工作,比较方便

Maven坐标依赖管理

  • 依赖管理导入jar包步骤

    • 在pom.xml中编写<dependencies>标签
    • <dependencies>标签中使用<dependency>引入坐标
    • 定义坐标的groupID、artifactId、version
    • 单击刷新按钮,使坐标生效

    在这里插入图片描述

  • 以引入MySQL驱动jar包为例

    • 百度输入mysql maven进入进入mysql依赖官网(https://mvnrepository.com/artifact/mysql/mysql-connector-java)(注意:若使用其他jar包则也在百度输入名称 maven进入对应的依赖官网即可 )

    • 找到合适的mysql依赖单击进入,并复制Maven依赖到pom.xml文件中

      在这里插入图片描述

    • 第一次复制到pom.xml文件中时,mysql版本号会报红(原因是当前本地仓库中没有该版本的mysqljar包或插件),单击刷新按钮即可从中央仓库下载到本地仓库中,当不报红时说明已经下载到本地仓库

      在这里插入图片描述

      在这里插入图片描述

    • 查看是否导入成功

      • 单击IDEA右侧Maven面板→查看Dependencies目录中是否有mysql-connector-java:8.0.28,若存在则说明导入成功,如图所示

        在这里插入图片描述

  • 删除依赖管理jar包步骤

    • 删除xml文件中想要删除的依赖对应的<dependency>标签及该标签的标签体,然后刷新即可,如图所示

      在这里插入图片描述

    • 查看是否删除成功

      • 单击IDEA右侧Maven面板→查看Dependencies目录中是否有mysql-connector-java:8.0.28,若无则说明删除成功,如图所示

        在这里插入图片描述

  • 注意:有时候会忘记点击刷新,所以有更好的办法—即自动生效,步骤如下:

    在这里插入图片描述

导入本地仓库jar包

  • 注意

    • 从中央仓库下载的jar包会自动保存到本地仓库中,下次使用时就属于从本地仓库中导入jar包
  • 导入本地仓库中的jar包步骤

    • 摁住Alt + Insert→Dependency→输入需要的jar包然后单击Add即可,如图所示

      在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

Maven依赖范围

  • 定义

    • 通过设置坐标的依赖范围(scope)来设置对应jar包的作用范围(比如:编译环境、测试环境、运行环境)

      • 若设置坐标的依赖范围为 编译环境 :代表jar包在编译环境有效(即在main目录的java目录下的所有类均可用jat包)
      • 若设置坐标的依赖范围为 测试环境 :代表jar包在测试环境有效(即在test目录的java目录下的所有类均可用jat包)
      • 若设置坐标的依赖范围为 运行环境 :代表导入的jar包只在你将来运行项目时可用

      在这里插入图片描述

  • 使用的标签体为<scope>作用范围</scope>

  • 依赖范围关键字对应可用的作用范围

    依赖范围编译classpath测试classpath运行classpath例子备注
    compileYYYlogback<scope>标签的 默认标签体
    test-Y-Junit
    providedYY-servlet-api在编译环境和测试环境有效,但在真正运行时就不会在使用该jar包
    runtime-YYjdbc驱动
    systemYY-存储在本地的jar包基本用不到system
    import
    • 注意
      • 以test举例说明(其他几个同理):假设设置的作用范围为test,此时在编译环境中的类就无法导入作用范围为test的jar包,也就意味着无法使用该jar包中的方法等内容
      • 配置<scope>作用范围</scope>的关键字为test、provided、system的jar包在运行环境下无效,也就意味着若将此时的项目package(打包)成一个war包后,war包中不会包含有以上三个关键字的jar包(以MavenWeb项目为例)
      • import需引入DependencyManagement,详见Maven高级部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名

在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站流量的重要来源。随着人工智能技术的进步&#xff0c;越来越多的人开始使用ChatGPT等AI工具来生成文章。然而&#xff0c;虽然这些工具可以快速生成内容&#xff0c;但要确保这些内容在搜索引擎中…

MK米客方德SD NAND磨损均衡技术

上次MK给大家讲解了MK SD NAND异常掉电保护机制&#xff0c;不少的工程师朋友们对此挺感兴趣&#xff0c;今天再和大家聊一聊SD NAND内部的另外一个核心技术SD NAND&#xff1a;磨损均衡&#xff08;Wear Leveling&#xff09;。 SD NAND内部主要由NAND Flash和Flash Controll…

Python操作MySQL数据库--使用pymysql模块

Python操作MySQL数据库--使用pymysql模块 一、新建数据库和数据表1.1 新建book数据库1.2 新建bookprice数据表二、连接数据库2.1 建立数据库连接三、新增数据3.1 新增单条数据3.2 新增多条数据3.3 批量新增四、修改数据4.1 修改单条数据4.2 修改多条数据五、删除数据5.1 删除单…

【Android Studio】Notification通知提醒功能完整代码以及踩坑记录

前言&#xff1a;在最近学习安卓通知功能的开发中&#xff0c;遇到了一些坑&#xff0c;困扰了我一些时间&#xff0c;搜集了大量资料写个博客总结一下&#xff0c;希望对大家有帮助。 目录 一、启动项目闪退 1.1、问题详情 1.2、解决方法 二、点击通知无法跳转 2.1、问题…

ONLYOFFICE8.1新版本桌面编辑器测评

什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一套功能强大的文档编辑器&#xff0c;支持编辑处理文本文档、电子表格、演示文稿、可填写的表单、PDF&#xff0c;可多人在线协作&#xff0c;支持 AI 集成。 该套件可在 Windows、Linux、Android 和 iOS上使用&#xff0c;包括网页…

最大团问题--回溯法

一、相关定义 给定一个无向图 &#xff0c;其中 V 是图的顶点集&#xff0c;E图的边集 完全图&#xff1a;如果无向图中的任何一对顶点之间都有边&#xff0c;这种无向图称为完全图 完全子图&#xff1a;给定无向图 &#xff0c;如果 &#xff0c;且对应任意 且 &#xff0c;则…

x264 码率控制 VBV 算法原理:数学模型与数据流转

x264 码率控制 VBV 算法原理 关于 VBV原理的分析可以参考:x264 码率控制 VBV 原理。关于 VBV 算法的源码分析可以参考:x264 码率控制中实现 VBV 算法源码分析。VBV算法介绍 x264中的VBV(Video Buffering Verifier)算法是H.264编码标准的一部分,主要用于码率控制,确保视频…

【CPP】交换排序:冒泡排序、快速排序

目录 1.冒泡排序简介代码分析 2.快速排序2.1霍尔版本简介代码分析 2.2挖坑版本2.3前后指针版本2.4非递归的快排思路代码 什么是交换排序&#xff1f; 基本思想&#xff1a;所谓 交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0…

2.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这篇文章介绍arduino使用和安装arduino_bridge 将arduino与树莓派连接 查看arduino的端口号&#xff0c;我们这里查看到的时ttyUSB0 ll /dev/ttyUSB*将当前用户添加进dialout组 sudo usermod -a -G dialout your_user_name然后重启树莓派&#xff0c;然后才能生效 然后如果你…

PyCharm2024 for mac Python编辑开发

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

机器人控制系列教程之URDF自动生成工具

URDF文件的编写较为复杂&#xff0c;ROS官方提供了URDF的SolidWorks插件&#xff0c;可方便地将 SW 零件和装配体导出为 URDF 文件。导出器将创建一个类似 ROS 的软件包&#xff0c;其中包含网格、纹理和机器人&#xff08;URDF 文件&#xff09;目录。对于单一的 SolidWorks 零…

Python生成图形验证码

文章目录 安装pillow基本用法生成代码 安装pillow pip install pillow 基本用法 特殊字体文字 如下所示&#xff0c;将下载下来的ttf字体文件放到py文件同一文件夹下 分享一个免费下载字体网站&#xff1a;http://www.webpagepublicity.com/free-fonts.html 我选的字体是Baj…

Linux 基于sqlite3数据库的学生管理系统

一、数据库 sqlite官网&#xff1a;www.sqlite.org 1.1 数据库的安装 离线安装&#xff1a; sudo dpkg -i sqlite3_3.22.0-1ubuntu0.4_amd64.deb //数据库软件 sudo dpkg -i libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb //数据库的库函数 在线安装&#xff1a; sudo apt-get …

推荐系统三十六式学习笔记:原理篇.模型融合13|经典模型融合办法:线性模型和树模型的组合拳

目录 为什么要融合&#xff1f;“辑度组合”原理逻辑回归梯度提升决策树GBDT二者结合 总结 推荐系统在技术实现上一般划分为三个阶段&#xff1a;挖掘、召回、排序 。 为什么要融合&#xff1f; 挖掘的工作是对用户和物品做非常深入的结构化分析&#xff0c;各个角度各个层面…

MySQL之可扩展性(六)

可扩展性 向外扩展 12.重新均衡分片数据 如有必要&#xff0c;可以通过在分片间移动数据来达到负载均衡。举个例子&#xff0c;许多读者可能听一些大型图片分享网站或流行社区网站的开发者提到过用于分片间移动用户数据的工具。在分片间移动数据的好处很明显。例如&#xff…

鸿蒙开发设备管理:【@ohos.batteryInfo (电量信息)】

电量信息 该模块主要提供电池状态和充放电状态的查询接口。 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import batteryInfo from ohos.batteryInfo;属性 描述电池信息。 系统能…

NLP经典论文研读--xlnet论文代码复现记录

xlnet源码解读(简易pytorch实现版本) xlnet这个模型还是相当复杂的&#xff0c;我看了很长一段时间也还是有很多地方没有搞明白&#xff0c;最后又在网上搜了很多大佬写的相关博客&#xff0c;才算是大致弄明白了&#xff0c;想了解xlnet的原理&#xff0c;请参考原论文&#…

(2024,RNN,梯度消失和爆炸,记忆诅咒,重参数化和动态学习率,权重矩阵对角化,复值 RNN)梯度消失和爆炸并不是故事的结局

Recurrent neural networks: vanishing and exploding gradients are not the end of the story 公和众与号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 梯度消失和梯度爆炸 2. 记…

%运算符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法介绍 在python中&#xff0c;可以使用%运算符进行灵活多样的格式化处理&#xff0c;通用的语法格式为&#xff1a; &#xff08;格式模板&…

面试突击:ArrayList源码详解

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。ArrayList 是我们日常开发中不可避免要使用到的一个类&#xff0c;并且在面试过程中也是一个非常高频的知识点&#…