Maven 简介

1 简介

 现在笔者想起来,真正开始接触Maven是自从去年进入新组,虽然去海康威视学习,但在哪里的时间一直在做C++的开发,而也是回来之后,7月中旬之后陆续使用Maven进行项目依赖的管理,在总后出差的几个月,Maven一直在使用,但不知其所以然,在南京出差的几个月,Maven仍然给自己带来了很大的困扰,因此在5月从北京出差回来,经过在工大、单位、以及湖墅新村周末的时间,自己把许晓斌撰写的这本《Maven 实战》阅读完成,不动笔墨不读书,如果读书之后,不能进行及时的总结和输出,那么虽然阅读时比较清晰的内容随着时间的延长,依然会变得模糊起来,基于此,在6月到来的盛夏,打算多输出几篇关于本书的博客。全书的主要内容如下:
在这里插入图片描述
 到目前为止,在项目中Maven对我的帮助并不大,一般出现了问题,也无法进行良好的解决,主要的解决方式是在外网下载pom文件中完整的依赖,然后直接完整的替换本地仓库repository,这很low,因此,稍后一定要引入Nexus,作为本地私服,这是熟练使用Maven必经之路,这是后话,不再追溯。我主要是用Maven下载依赖,然后使用Maven把项目打成可执行的Jar包或者war。关于构建、关于坐标和依赖、关于生命周期和插件、关于Maven与测试、关于Maven私服,自己更是一穷二白,只会简单的使用,而不懂为什么要用Maven,Maven在项目构建中所扮演的角色理解的也不够深刻,鉴于此,购书,读书的需求便也一气呵成了。
 本书的主要内容对应Maven实战的第一章Maven的简介。

2 5W1H

 在工作中,经常要解决的便是问题,在解决问题时需要对问题进行良好的阐述,常用5W1H六何分析法也是一种这样的策略,可以用来分析问题,制定计划。在5W1H中,6个元素扮演者重要的地位。
在这里插入图片描述
 自然Maven是本篇文章的重点,通过上图我们可以提出的问题有什么是Maven?为什么要在开发时使用Maven呢?Maven在解决什么问题时能够帮助开发人员,何时应该使用Maven?怎样使用Maven呢(这个问题是Maven 实战全书阐述的核心,晓斌在教我们在开发中如何使用Maven)

3 Maven 是什么

Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。当然这很宽泛,但在使用Maven的过程中,依赖管理这个点比较好理解,因为在制作之后的jar或者war包中存在了许多的jar,而这些jar并没有存在由maven构建的项目lib包中。想要理解Maven服务于Java平台的项目构建

3.1 何为构建

 构建(build)几乎是每一位程序员每天都在做的工作。早上来到公司,我们做的第一件事情就是从源码库签出最新的源码,然后进行单元测试,如果发现失败的测试,会找相关的同事一起调试,修复错误代码。接着回到自己的工作上,编写自己的单元测试及产品代码,生成项目测试文档,诸如像模像样的测试覆盖率报告,然后使用IDE生成一个war包,部署到web容器下,启动容器,等这个过程即为构建的过程。
 如果在项目运行时,测试人员突然提出了几个Bug,当然,第一件事就是要进行的Bug复现,很遗憾,这确实是一个Bug,接下来就要进行Bug的定位,然后开发人员花了不短的时间,终于解决了Bug,那么这个时候自然是重新把项目制作成war包,部署到Web容器下,启动容器,然后发现问题确实得到了解决,此时把修改的代码提交到库上,通知测试人员问题已经解决。
因此除了编写代码之外,还有相当的时间花在了如下的工作中:
在这里插入图片描述
而Maven正是一个这样的优秀的项目构建工具

3.2 强大的Maven

Maven的能力如下图所示:
在这里插入图片描述
 从上图可以看到,Maven不仅仅是优秀的良好的构建工具,它能帮助开发人员自动进行构建过程,从清理、编译、测试到生成报告,再到打包和部署。Maven抽象了一个完整的构建生命周期模型(生命周期和插件),同时Maven为我们提供了一个强大的中央仓库和坐标系统,这可以进行项目的依赖管理,使用Maven可以解决版本不一致,版本冲突、依赖臃肿这些传统通过在lib包中导入依赖的项目中所存在的问题。至于项目信息管理,则是通过使用插件(JavaDocs, Source Xref, CheckStyle, PMD, ChangeLog, Cobertura)生成项目站点信息,统一管理这些项目的信息。这些信息如下图所示:
在这里插入图片描述
 坐标系统,参见pom(Project Object Model)文件,Maven项目的核心是pom.xml。Project Object Model项目对象模型定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。

3.3 何时使用Maven

在软件开发人员使用Java开发项目时,尤其是Java Web项目时,推荐使用Maven来管理项目依赖,以及项目生命周期的完整阶段。

4 为什么要使用Maven

 Maven并不是Java领域的唯一的构建管理的解决方案。其他的构建方案有IDE,Make,Ant。

4.1 组装PC和品牌PC

 如果自己组装PC,则需要自己查阅各类配件的优劣,CPU,内存,主板,显卡,甚至声卡,都要仔细挑选,虽然花费大量的时间,可组装出来的电脑很有可能机器稳定性不怎么好。
而在购买PC时,也可以直接选择浏览某品牌的PC供应商的网站,只需要选择需要的配置,然后下单即可。当设备到家之后,只需要接上显示器,电源,鼠标,键盘直接可以使用。这可以帮助节省大量的时间,而且商品在出货之前已经经历了良好的测试,还能享受售后服务。
 使用Maven就像购买品牌PC,省时省力,并能得到成熟的构建系统,还能得到Maven社区的支持。Maven在工作时,封装了包括依赖管理,生命周期的执行,通过一组统一的暴露出来的接口完整的实现了开发时需要耗费大量时间的清理、编译、测试、打包和部署,节省需要额外的手动点击,让自动化在构建过程中顺畅的进行,这有利于让程序员仅仅关注代码逻辑。我们一直不停的寻找避免重复的方法,包括设计的重复,编码的重复,文档的重复,然后还有构建的重复。与Spring Boot一样,Maven也按照约定大于配置的规则,Maven对于项目的目录结构,测试用例命名方法都有既定的规则,只要遵循这些成熟的规则,用户在项目之前切换时就免去了额外的学习成本,可以节省人力和物力。

5 Maven与极限编程

 极限编程是这些年在软件行业非常火的敏捷开发方法,它强调拥抱变化。该软件开发创始人Kent Beck提出了XP所追求的价值,实施原则和推荐实践。记得Kent Beck在《重构 改善既有代码的设计》中为全书总结时,提出了如何学习重构的技术。

  1. 随时挑选一个目标
  2. 没把握就停下来
  3. 学习原路返回
  4. 二重奏(结对编程)
     言归正传,Maven对于XP的价值具有非常一致的契合度。
    在这里插入图片描述

6 总结

本篇文章以Maven为核心,并且在行文过程中以5W1H的方式核心分析了Maven是什么?为什么使用Maven?以及Maven的优点等问题,能够准确的回答这些问题,这样才不会陷入当别人问起Maven相关的问题时才发现自己一直在用,但却关于Maven的好处答不上来的窘境。在文章的最后也阐述了Maven与极限编程可以很好的结合使用。

7 参考

《重构 改善既有代码的设计》之JUnit测试框架以及IDEA与JUnit整合
内网进行spring-boot开发时Jar包依赖的解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值