Maven概念及入门

概述

Maven是Apache软件基金会组织维护的一款自动化构建工具。主要有两个作用:

  • maven 工程对 jar 包的管理过程
    Maven概念及入门

    开发过程中,所有的路径或配置文件中配置的类路径等都是以编译结果的目录结构为标准的

    手动创建 maven 工程

    配置 maven 环境

    下载和安装Maven按如下步骤进行:

    Step 1: 登录Maven站点下载Maven最新版。虽然Maven是基于Java的生成工具,具有平台无关的特性,但考虑到解压缩的方便性,通常建议Windows平台下载*.zip压缩包,而Linux平台下载.gz压缩包。

    Step 2: 将下载的压缩文件解压缩到任意路径,解压缩后看到如下文件结构:

    • bin:保存Maven的可执行命令。其中mvn和mvn.bat就是执行Maven工具的命令。
    • boot:该目录只包含一个plexus-classworlds-2.6.0.jar。plexus-classworlds是一个类加载器框架,与默认的Java类加载器相比,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。通常无需理会。
    • conf:保存Maven配置文件的目录,该目录包含settings.xml文件,该文件用于设置Maven的全局行为。通常建议将该文件复制到/.m2/目录下(表示用户目录),这样可以只设置当前用户的Maven行为。
    • lib:该目录包含了所有Maven运行时需要的类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.6.3.jar、maven-repository-metadata-3.6.3.jar等文件。此外,还包含Maven所依赖的第三方类库。
    • LICENSE、README.txt等说明文档。

    Step 3: Maven的运行需要如下两个环境变量:

    • JAVA_HOME:该环境变量应指向JDK安装路径。如果已经成功安装了Tomcat,则环境变量应该是已经正确的
    • M2_HOME:该环境变量应指向Maven安装路径。

    提示:Maven安装路径就是前面释放Maven压缩文件的路径。Maven安装路径下应该包含bin、boot、conf和lib4个文件夹。

    Step 4: Maven工具的关键命令就是%M2_HOME%/bin路径下的mvn.bat命令,如果希望操作系统可以识别该命令,还应该将%M2_HOME%/bin路径添加到操作系统的PATH环境变量之中。

    Step 5(可选): 在%M2_HOME%/conf/settings.xml中添加如下代码,因为使用Maven过程中涉及很多插件的下载,而这些插件都是在国外Maven的中央仓库,下载会很缓慢,所以添加国内的镜像的话下载速度会起飞哦!

    经过上面5个步骤,Maven安装成功,启动命令行窗口,输入如下命令(如果未将%M2_HOME%/bin路径添加到操作系统的PATH环境变量之中,则输入mvn.bat的全路径):
    通过该命令应该先看到Maven不断地从网络下载各种文件,然后会显示如下两类信息:

    • System Properties
    • Environment Variables

    如果能看到Maven输出如上两类信息,则表明Maven安装成功。

    创建maven 工程

    1. 按下面结构创建文件属于maven的文件目录

    2. 编写 POM.xml

    3. 在 目录下新建文件

    4. 利用 进行编译

    Maven概念及入门

    Maven 的核心概念

    Maven 核心点的九大概念: POM,约定的目录结构,坐标,依赖管理,仓库管理,生命周期,插件和目标,继承,聚合

    Maven目录结构

    Maven概念及入门
  • 中央仓库:架设在Internet上,为全世界所有Maven工程服务
  • 中央仓库镜像:为了分担中央仓库的流量,提升用户访问速度

当Maven需要使用某个插件或JAR包时,Maven的搜索顺序为:本地资源库->远程资源库->中央资源库

  • 当Maven从中央资源库下载了某个插件或JAR包时,Maven都会自动在本地资源库中保存它们,因此只有当Maven第一次使用某个插件或JAR包时,才需要通过网络下载。

仓库中的文件:

  • Maven自身所需的插件
  • 第三方框架或工具的jar包
  • 自己开发的Maven工程

※不管是什么样的 jar包,在仓库中都是按照坐标生成目录结构所以可通过统一的方式查询或依赖。

依赖

依赖的目的

当 A jar 包用到了 B jar 包中的某些类是,A就对B产生了依赖。
在项目中 可以用使用 标签来指定被依赖的 jar 包的坐标。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f42103a5d68e4e1babb180197275e95f.png” />

依赖的范围:

·dependency· 中出来 jar 包的坐标之外,还存在 scope 设置,即为 依赖的范围。范围的可选值有三种:
compile,test和provided。
【1】项目结构角度分析 compile 和 test 的区别:

Maven概念及入门

【3】有效性总结

Maven概念及入门

Maven概念及入门
那么我们的配置中应该加上 相关字样:
Maven概念及入门

统一管理所依赖的 jar 包版本

为了方便升级框架,可以将 jar 包的版本信息统一提取出来

  • 统一声明版本号,可以理解为创建一个变量专门存取版本号
  • 在需要版本好的地方应用即可

其实properties标签配合自定义标签声明数据的配置并不是只能用于声明依赖的版本号。凡是需要统一声明后再弓|用的场合都可以使用(比如编码方式等)

依赖的原则:解决 jar 包冲突的方法

  • 路径最短者优先
    Maven概念及入门
    这里的声明指的是 dependency 标签配置的先后顺序

生命周期

各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行
Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的

  • Maven核心程序为了更好的实现自动化构建,按照这一的特点执行生命周期中的各个阶段:不论现在要执行生命周期中的哪一个阶段,都是从这个生命周期最初的位置开始执行

Maven包含三个基本的生命周期。

  • clean生命周期:在进行构建之前的一些清理工作。
  • default生命周期:编译,测试,打包,安装和部属等。
  • site生命周期:生成项目报告,站点,发布站点。

可以使用 来 运行整个流程。

每套生命周期都是由一组阶段组成, Maven可以支持许多不同的生命周期,最常用的生命周期是Maven默认的生命周期。我们平时输入的命令行总会对应某个特定的阶段。如 mvn clean 表示 Clean 周期的一个阶段。

Clean 生命周期
clean生命周期用于在构建项目之前进行一些处理工作,该生命周期包含如下三个核心阶段:

  • pre-clean:执行一些在 clean 之前需要完成的工作
  • clean:执行清理,移除上一次构建生成的文件
  • post-clean:最后清理,执行一些需要在clean之后立即完成的工作

Site 生命周期

  • pre-site 执行一些需要在生成站点文档前完成的操作。
  • site: 生成项目的站点文档
  • post-site:执行一些需要在生成站点文档之前的操作工作,并且为部署做准备
  • site-deploy:将生成站点文档1部署到特殊的服务器上

Default 生命周期

  • validate:验证项目是否正确
  • generate-sources:生成源代码
  • process-sources:处理源代码
  • generate-resources:生成项目所需的资源文件
  • process-resources:复制资源文件至目标目录
  • compile:编译项目的源代码
  • process-classes:处理编译生成的文件
  • generate-test-sources:生成测试源代码
  • process-test-sources:处理测试源代码
  • generate-test-resources:生成测试的资源文件
  • process-test-resources:复制测试的资源文件至测试目标目录

生命周期的自动构建

运行任何一个阶段的时候,它前面的所有阶段都会被运行,例如我们使用 时,代码会被编译,测试,打包。即自动完成构建,这也是学习生命周期的重要性。

插件和目标(plugins and goal)

除了可以使用Maven官方、第三方提供的各种插件之外,也可以开发自定义插件,通过自定义插件来完成任务。

每个插件又可以包含多个可执行的目标(goal),使用mvn命令执行指定目标的格式如下:

当使用mvn运行Maven生命周期的指定阶段时,各阶段所完成的工作其实也是由插件实现的。插件目标可以绑定到生命周期的各阶段上,每个阶段可能绑定了零个或者多个目标。随着Maven沿着生命周期的阶段移动,它会自动执行绑定在各特定阶段上的所有目标。

Maven生命周期的各阶段也是一个抽象的概念,

  • 对于软件构建过程来说,默认的生命周期被划分为compile、test、package、install、deploy这5个阶段,但这5个阶段分别运行什么插件、目标,其实是抽象的——这些阶段对于不同项目来说意味着不同的事情。
  • 例如,package阶段在某些项目中对应于生成一个JAR,它意味着“将一个项目打成一个JAR包”;而在另一个项目里,package阶段可能对应于生成一个WAR包。

开发时可以将任意插件绑定到指定生命周期,如下:

build>  plugins>    plugin&

来源:Mr_tianyanxiaobai

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月21日
下一篇 2021年6月21日

相关推荐