文章目录

  • Maven概述
  • Maven是什么?
  • 为什么使用Maven
  • 软件即是工程
  • 传统项目开发存在的问题
  • Maven技术详细介绍
  • 项目构建过程中的环节(Maven自动化构建需要完成的事)
  • Maven的核心概念


Maven概述

Maven是什么?

  • Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven这个单词的本意是:专家,内行。读音是['meɪv(ə)n]或['mevn]。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcrvACVp-1666000992427)(amWiki/images/maven/maven1.png)]
  • maven官网链接

为什么使用Maven

软件即是工程
  • 我们在日常生活常能听到工程这个词,像桥梁工程、道路工程、南水北调工程等等。
  • 工程说简单点就是各个行业的从业人员通过总结规律或者方法,以最短的时间和人力、物力来做出高效可靠的东西。当然这种方法是可复用的。我们将这种作工程的思想应用到软件上,于是就产生了—软件工程
  • 软件工程:为了能够实现软件的流水线式生产,在设计和构建软件时能够有一种规范和工程化的方法,人们便提出了软件工程概念。
  • 软件开发中的问题
这是阳光明媚的一天。托马斯向往常一样早早的来到了公司,冲好一杯咖啡,进入了自己的邮箱——很 不幸,QA小组发来了一封邮件,报告了他昨天提交的模块的测试结果——有BUG。“好吧,反正也不是第一 次”,托马斯摇摇头,进入IDE,运行自己的程序,编译、打包、部署到服务器上,然后按照邮件中的操作路径进行测试。“嗯,没错,这个地方确实有问题”,托马斯说道,于是托马斯开始尝试修复这个 BUG,当他 差不多有眉目的时候已经到了午饭时间。
下午继续工作。BUG很快被修正了,接着托马斯对模块重新进行了编译、打包、部署,测试之后确认没 有问题了,回复了QA小组的邮件。
一天就这样过去了,明媚的阳光化作了美丽的晚霞,托马斯却觉得生活并不像晚霞那样美好啊。

让我们来梳理一下托马斯这一天中的工作内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lrlc0MbV-1666000992429)(amWiki/images/maven/maven2.png)]
从中我们发现, 托马斯的很大一部分时间花在了编译、打包、部署、测试这些程式化的工作上 面,而真正需要由“人”的智慧实现的分析问题和编码却只占了很少一部分。而且上述过程需要重复多次,大型项目中构建项目比较复杂,有很多的配置文件,jar文件,多个子项目等等。都用人力完成费时费力,效率比较低。maven可以让我们从上面的工作中解脱出来。maven是自动化构建工具

传统项目开发存在的问题
  • 从上面的例子可以简单总结出传统项目开发中的一些问题
  • 一个项目做成一个工程,造成工程比较庞大,需要使用多模块来划分项目
  • 项目中需要的数量众多的jar包,需要手动下载并引入,并且多个项目需要的jar包存在重复的问题 ;
  • 项目中需要的jar包有版本兼容的问题, 需要手动解决;
  • 项目中需要的jar包又依赖其它的jar包,需要手动解决。

Maven技术详细介绍

  • Maven是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用, Maven是一款在大型项目开发过程中不可或缺的重要工具。
  • Maven可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目;
  • Maven提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中;
  • Maven可以根据指定版本自动解决jar包版本兼容问题
  • Maven可以把jar包所依赖的其它jar包自动下载并引入项目。类似自动化构建工具还有:Ant,Maven, Gradle。

项目构建过程中的环节(Maven自动化构建需要完成的事)

  • 构建过程中的各个环节:清理、编译、测试、报告、打包、安装、部署。
  • 清理: 删除以前的编译结果,为重新编译做好准备。
  • 编译: 将Java源程序编译为字节码文件。
  • 测试: 针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  • 报告: 在每一次测试后以标准的格式记录和展示测试结果。
  • 打包: 将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
  • 安装: 在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
  • 部署: 将打包的结果部署到远程仓库或将war包部署到服务器上运行

Maven的核心概念

  • Maven能够实现自动化构建是和它的内部原理分不开的, 在Maven的自动化构建过程中,有九个比较重要的概念
  • ①POM
  • ②约定的目录结构
  • ③坐标
  • ④依赖管理
  • ⑤仓库管理
  • ⑥生命周期
  • ⑦插件和目标
  • ⑧继承
  • ⑨聚合