Maven学习笔记(一)——综述篇


Motivation

自学习Java Web以来,除了写代码,一是与各种各样的JAR包打交道,二是不停的辗转于开发端和服务端两边,部署、测试…这些简单重复劳动是非常消耗时间和耐心的。自从了解到Maven可以用来管理依赖、自动化部署,它就被加入到我的学习清单中了。


Maven是什么?

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。[1]


从问题出发

上述的概念并不能让我们对Maven是什么这个问题建立一个较为直观的认识。那么接下来,我们通过几个它可以解决的问题来进一步了解它。

问题1:Java工程中的依赖管理问题

在编写Java工程时,我们需要用到各种外部依赖,比如mysql-connector.jar,它是用来通过jdbc链接mysql数据库的外部依赖包。这其中就会存在以下的问题:

①我们需要手动下载所需的JAR包;
②每当创建一个新的工程,需要将这些JAR包再复制一份给新的工程,造成了磁盘空间的浪费;
③如果我们需要直接引用的依赖A依赖于B,那么我们只能等到测试的时候根据报错信息,才能发现需要手动引入依赖B;
④使用Github时,需要将这些依赖上传上去,非常耗时。

总结起来,因为现在的磁盘越来越大,②不是一个特别尖锐的问题,但是①③④都非常消耗开发者的时间和耐心。

当我们使用Maven来管理这些依赖时,我们只需要在配置文件中写好需要用到依赖。针对上述的问题,其解决方式为:

①Maven会自动从本地仓库或网上的中央仓库加载依赖文件;
②Maven会在磁盘中固定的位置创建一个本地仓库,每次查找依赖时先从本地仓库找,如果不存在,再去中央仓库下载依赖文件到本地仓库。这些依赖并不会被复制到工程中去,只是在构建工程的时候才会将它们打包进WAR包中;
③根据我们声明的依赖,Maven会自动将这些依赖的依赖也包含进来;
④同②,因为依赖文件并没有被复制到工程中,因此commit时只需要上传代码和声明依赖的配置文件(名称为pom.xml,将在下文中详细讲解),极大的节省了时间与空间。

问题2:测试与部署的问题

通常,当我们想要在服务器上测试当前写好的工程时,需要经历以下步骤:

①打包工程,得到WAR包;
②运行mstsc,打开远程桌面,访问服务器;
③将WAR包上传到服务器上;
④将WAR包改名为ROOT.war(测试时URL中可以省略工程名);
⑤启动服务器;

使用Maven来管理我们的工程时,只要编写好了配置文件,只需一键,就可以完成上述操作。全程只需要在开发PC上操作即可,不需要远程访问服务器,同样可以大幅的节省所需的操作。

当然,Maven可以解决的问题很多,我仅给出上述两个例子用来说明其强大的功能。


系列博文

遵循之前的行文习惯,以下是这套博文的索引。

Maven学习笔记(一)——综述篇(2018.09.01)

Maven学习笔记(二)——配置篇(2018.09.01)

Maven学习笔记(三)——中央仓库与依赖管理篇(2018.09.04)

Maven学习笔记(四)——部署篇(2018.10.08)


更新日志

今天刚刚学习完Maven,其中跳过了一些目前暂时用不到的知识,今后用到的时候再返回来学习,这也是我比较喜欢的学习方式。因此开始写这套博文,一为保持写作的习惯,二为记录学习所得,避免遗忘;三为分享心得,以期交流。
——2018.09.01

因为综述篇确实很短,所以今天一口气写了两篇博文,把配置篇也写了。目前的规划中,Maven的知识还有两篇——《中央仓库与依赖管理篇》和《部署篇》,写的时候看内容的多少吧,前者也可能拆成两篇。
——2018.09.01

今天赶早写完了第三篇,写的比较核心,省略了一些概念上的东西。
——2018.09.04

写完第三篇之后,因为远程部署没有掌握,因此迟迟没有开始写《部署篇》。中间因为各种原因一直没有来得及弄懂它。今天终于弄清楚了这部分,写完了原计划中Maven的最后一篇《部署篇》。
——2018.10.08


后记

本以为Maven的知识少,可以快速的掌握,书越往后看翻得越快。核心的知识掌握了,也跳过了一些其他的章节。总之,这些知识还是需要在今后的实践中通过犯错、通过发现问题然后再去查、再回来翻书来加深理解和掌握。


  1. 摘自百度百科——Maven ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMplementist

你的鼓励,是我继续写文章的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值