• Maven基础简介


    Maven概述

    什么是Maven

    Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。–>《百度百科》
    Maven:本质上是一个软件,用来管理项目的

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

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

    • 提供了一套标准化的项目结构
    • 提供了一套标准化的构建流程(编译、测试、打包、发布 …)
    • 提供了一套依赖管理机制
      在这里插入图片描述

    Maven作用

    1. 项目构建管理: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
    2. 管理依赖(jar包): maven能够帮我们统一管理项目开发中需要的jar包;
    3. 管理插件: maven能够帮我们统一管理项目开发过程中需要的插件;

    Maven模型

    在这里插入图片描述

    Maven仓库

    在这里插入图片描述
    仓库分类:

    • 本地仓库:自己计算机上的一个目录(文件夹)
    • 中央仓库:由Maven团队维护的一个目录(地址:http://repo1.maven.org/maven2/)
    • 远程仓库:一般由公司或者团队搭建的私有仓库

    当项目中使用坐标引入对应依赖jar包,首先会查找本地仓库是否有对应的jar

    • 如果有,则在项目中直接引用
    • 如果没有,则去中央仓库中下载对应的jar包到本地仓库

    还可以搭建远程仓库,将来jar包的查找顺序为:

    • 本地仓库–>远程仓库–>中央仓库

    Maven快速入门

    Maven下载与安装

    1.下载

    官方网站:http://maven.apache.org/
    下载页面:http://maven.apache.org/download.cgi
    
    • 1
    • 2

    在这里插入图片描述
    2.安装
    将下载好的压缩文件apache-maven-x.x.x-bin.zip解压到一个没有中文,空格和特殊字符的文件夹内即可
    在这里插入图片描述
    3.Maven安装目录简介
    在这里插入图片描述
    4.Maven配置环境变量

    3版本的Maven软件依赖1.7或以上版本的JDK,所以安装Maven之前需要确认JDK的版本和JAVA_HOME是否正确配置

    新增环境变量:MAVEN_HOME
    在这里插入图片描述
    注意:JAVA_HOME路径需要设置成bin目录的上一级目录

    在Path环境变量中添加:%MAVEN_HOME%\bin
    在这里插入图片描述
    测试:在cmd控制台中输入命令:mvn -version 如果出现以下Maven的版本信息,则说明Maven的安装与环境变量的配置均正确
    在这里插入图片描述

    Maven基本配置

    1.配置本地仓库

    本地仓库:本地仓库就是本地目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包),本地仓库供你电脑上所有项目使用,Maven所有的jar包都是从远程仓库下载到本地仓库

    本地仓库的位置是通过Maven的核心配置文件settings.xml来配置的。settings.xml文件位于Maven安装目录:apache-maven-3.3.9\conf\settings.xml
    在这里插入图片描述
    打开settings.xml文件,发现本地仓库默认的地址为当前用户的/.m2/repository目录
    在这里插入图片描述
    一般情况下,我们需要自己重新设置本地仓库的地址

    第一步:在Maven的安装目录下创建一个repository文件夹(一般习惯将仓库地址和Maven安装目录放置在一起)
    在这里插入图片描述
    第二步:在核心配置文件setting.xml中,将仓库存放的位置设置成自己的安装路径
    在这里插入图片描述
    2.配置远程仓库

    中央仓库默认是apache提供的,位于国外。(中央仓库的地址:http://mvnrepository.com/)

    3.配置Maven私服

    私服是可以架设在局域网的一种特殊的远程仓库,目的是代理中央仓库来部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库(中央仓库),将构件下载到私服,再提供给本地仓库下载。

    我们到公司,公司都会有自己的私服。其实私服就是一个服务器。我们的Maven项目到私服服务器上去下载jar包到本地仓库供Maven项目使用。
    在这里插入图片描述
    配置私服:(阿里云私服)

    <mirror>
         <id>nexus-aliyun</id>
         <mirrorOf>*</mirrorOf>
         <name>Nexus aliyun</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:
    在这里插入图片描述
    注: 千万注意, 只可配置一个(另一个要注释!) 不然两个可能发生冲突 ,导致jar包下不下来

    Maven工程

    在创建Maven工程之前一定要保证上述的仓库都是配置成功了,否则无法创建Maven项目,因为创建Maven项目都要到仓库中去下载插件。那么上面我们已经配置好Maven仓库了,接下来我们就要创建Maven工程了

    IDEA配置本地Maven

    1.IDEA配置Maven环境

    第一步:1.回到IDEA主界面 -->Customize–>All Settings
    在这里插入图片描述
    第二步:在搜索框里搜索Maven,配置maven_homesettings.xml的路径
    在这里插入图片描述
    2.IDEA配置Maven参数

    使用IDEA创建Maven项目后,默认会去网络中的中央仓库中下载一些配置资源,那么会很慢,这里需要设置下,那么就不会到中央仓库去下载了一些资源,而是到本地仓库下载。需要设置参数archetypeCatalog,设置方法如下:将-DarchetypeCatalog=internal 设置到Maven--Runner--VM Options
    在这里插入图片描述

    参数:-DarchetypeCatalog=internal
    
    • 1

    参数说明:

    • -D:在maven中表示设置参数的意思
    • archetypeCatalog:表示设置参数的名字
    • internal:表示设置参数的值

    3.IDEA创建Maven项目

    第一步:File–>New–>Project–>Next
    在这里插入图片描述
    第二步:填写项目的坐标信息
    在这里插入图片描述
    4.Java工程目录简介
    在这里插入图片描述
    5.测试Maven项目
    在这里插入图片描述

    Maven坐标详解

    什么是坐标?

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

    Maven坐标的主要组成

    • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.baidu)
    • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
    • version:定义当前项目版本号

    在这里插入图片描述

    Maven常用命令

    clean命令

    clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;

    需求:清理存储上一次构建项目生成的文件target
    在这里插入图片描述
    compile命令

    compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。
    在这里插入图片描述
    test命令

    test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。
    在这里插入图片描述

    注意:

    • test命令只能运行test目录下的junit包下的类
    • test命令也可以运行多个测试方法

    package命令

    package命令是将项目打包成可以发布的包,Maven项目常见的打包方式有两种:

    • Maven的java project会打成jar
    • Maven的web project会打成war

    打包完成后将生成的文件存放在target目录中

    注意:每次打包前还会再次执行所有test命令

    install命令

    install命令是将当前的项目打包并发布到本地仓库中,供本地的其他maven项目使用。项目发布的路径:本地仓库路径/groupId/artifactId/

    注意:每次安装前还会再次执行所有test命令

    tomcat:run命令

    tomcat:run表示部署项目,项目上线运行。能够部署项目都是web项目。我们这里演示部署web项目。这里启动tomcat并不是使用idea中的tomcat,而是maven自带的。所以我们部署好项目之后发现idea中的tomcat并没有启动

    注意:使用maven在命令行中部署项目,一定要停止idea中的tomcat。否则,在命令行中不会启动成功tomcat

    其他
    在这里插入图片描述

    Maven的三套生命周期

    什么是生命周期

    在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。

    Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。

    Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。

    Maven的三套生命周期:Maven拥有三套相互独立的生命周期,分别是cleandefaultsiteclean 生命周期的目的是清理项目default 生命周期的作用是构建项目site 生命周期的目的是构建项目站点

    clean生命周期

    clean生命周期的目的是清理项目,它包含三个阶段:

    1. pre-clean 执行一些清理前需要完成的工作
    2. clean 清理上一次构建生成的文件
    3. post-clean 执行一些清理后需要完成的工作

    default生命周期

    default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:

    1. compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中
    2. test :使用单元测试框架运行测试,测试代码不会被打包或部署
    3. package :接收编译好的代码,打包成可以发布的格式,如jar和war
    4. install: 将包安装到本地仓库,供其他maven项目使用
    5. deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用

    site生命周期

    site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:

    • site :生成项目站点文档

    Maven生命周期相关命令

    mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件
    mvn compile :编译src/main/java中的java代码
    mvn test :编译并运行了test中内容 
    mvn package:将项目打包成可发布的文件,如jar或者war包;
    mvn install :发布项目到本地仓库 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Maven生命周期相关插件

    Maven的核心包只有几兆大小,核心包中仅仅定义了抽象的生命周期。生命周期的各个阶段都是由插件完成的,它会在需要的时候下载并使用插件,例如我们在执行mvn compile命令时实际是在调用Maven的compile插件来编译

    我们使用IDEA创建maven项目后,就不需要再手动输入maven的命令来构建maven的生命周期了。IDEA给每个maven构建项目生命周期各个阶段都提供了图形化界面的操作方式。具体操作如下:

    打开Maven视图:依次打开Tool Windows–>Maven Projects

    执行命令:双击Lifecycle下的相关命令图标即可执行对应的命令(或者点击运行按钮)
    在这里插入图片描述

    Maven应用详解

    pom配置详解

    pom(Project Object Model)指的是项目对象模型,用来描述当前的maven项目,使用pom.xml文件来实现。

    <?xml version="1.0" encoding="UTF-8"?>
    <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.heima.maven</groupId>
        <artifactId>maven-web2</artifactId>
        <version>1.0-SNAPSHOT</version>
      	<packaging>war</packaging>
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    pom文件详解

    1. <project> :pom文件的根标签,表示当前maven项目;
    2. <modelVersion>: 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,目前POM模型版本是4.0.0;
    3. 坐标:定位项目在本地仓库中的位置,下面三个标签组成一个坐标。
        1)<groupId>:maven项目组织id标识符,一般是公司域名倒过来写<groupId>com.java.maven</groupId>
    	2)<artifactId>:项目的标识符--项目名。<artifactId>maven-day01</artifactId>
    	3) <version>:项目的版本号;<version>1.0-SNAPSHOT</version>
    4. <packaging>:maven项目的打包方式一般配置jar或者war
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Maven坐标详解

    坐标元素定义如下:

    • groupId:定义当前项目(jar包)隶属的实际项目组
    • artifactId:定义当前项目(jar包)的名称
    • version:定义当前项目(jar包)的版本号

    通过上面三个参数我们就能够确定一个唯一版本号的jar包

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Maven依赖导入

    IDEA导入

    pom.xml文件中书写dependencies标签,鼠标光标移入到dependencies标签中,按Alt+Insert
    在这里插入图片描述
    选择Dependency后会弹出一个搜索框:输入要添加的jar包的名字
    在这里插入图片描述
    idea中还可以直接输入要使用的jar
    在这里插入图片描述

    从远程仓库导入

    如果我们导入的依赖本地仓库中没有,使用IDEA搜索就搜索不到了,我们需要从网络中查找这个依赖的坐标,然后将其添加到pom.xml文件中。添加完成之后,Maven会帮我们从私服或中央仓库中下载该依赖

    阿里云私服地址:https://maven.aliyun.com
    在这里插入图片描述
    复制上述的依赖到pom.xml文件中
    在这里插入图片描述

    Maven注意事项

    清理Maven仓库

    初始情况下,我们的本地仓库是没有任何jar包的,此时会从私服去下载(如果没有配置,就直接从中央仓库去下载),可能由于网络的原因,jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾。此时,Maven不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件
    在这里插入图片描述
    更新依赖索引

    有时候给idea配置完Maven仓库信息后,在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中,这个时候我们就需要更新idea中Maven的索引了,具体做法如下:

    打开设置----搜索Maven----Repositories----选中本地仓库-----点击Update
    在这里插入图片描述

  • 相关阅读:
    Redis缓冲区溢出及解决方案
    WebSocket服务多节点部署问题及解决方案
    车载电子电器架构 —— 国产基础软件现在与未来
    计算机毕业设计之流浪宠物管理系统
    rank()、row_number()、dense_rank()用法详解
    FlinkSQL字段血缘解决方案及源码
    12个MySQL慢查询的原因分析
    Kubernetes控制平面组件:Controller-Manager控制器管理
    【数据结构】顺序表---C语言版(数据结构开篇小菜,全网最详细!小白看一遍就学会!!!)
    数据分析:小红书2024年年轻人社交趋势洞察
  • 原文地址:https://blog.csdn.net/weixin_47383392/article/details/125531086