码迷,mamicode.com
首页 > 其他好文 > 详细

Maven实战01_Maven简介

时间:2017-07-03 21:09:14      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:接口   自动化构建   方便   实现   jar   工具   复杂   理解   声明   

1:何为Maven

  Maven:中文翻译为“知识的积累”,也可翻译为“专家”或“内行”。

  谈到Maven,就不得不提“构建(build)”,那么什么是构建呢,我们每天在对代码进行编译、运行单元测试、生成文档、打包、部署等繁琐但是能够使代码得以最大的健壮和最小的bug的保证,这即使构建,其实说白了,就是让代码运行起来的过程。但是每天这样人工的操作,着实是有些浪费时间呀,Maven就是一款起那个大的构建工具,能够帮助我们自动化构建过程,从清理、编译、测试到生成报告、再到打包和部署。我们就可以省下一遍又一遍地输入命令,一遍又一遍地点击鼠标的时间。我们要做的就是使用Maven配置好项目,然后输入简单的命令(如:mvn clean install),Maven就会自动帮我们处理那些繁琐的任务。

  我们一直在不停地寻找避免重复的方法。设计的重复、编码的重复、文档的重复、当然还有构建的重复。Maven能够最大化地消除构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件,我们不需要定义过程,甚至不需要再去实现这些过程中的一些任务。最简单的例子就是测试了,我们没必要告诉Maven去测试,更不需要告诉Maven如何运行测试,只需要遵循Maven的约定编写好测试用例,当我们运行构建的时候,这些测试便会自动执行,这应该就是传说中的测试驱动开发吧(TDD:Test Driver Development)。

  Maven的另一个优点:标准化构建过程。在Maven之前,是个项目可能有十种构建方式,但是有了Maven之后,所有的项目的构建命令都是简单一致的。这极大地避免了不必要地学习成本,而且有利于促进项目团队的标准化。

  正如Java并不仅是一门编程语言,还是一个平台一样。Maven不仅是一个构建工具,还是一个依赖管理工具和项目信息管理工具。它提供了中央仓库,能帮我们自动下载构件。开源年代的出现,就意味着类库的增多,类库版本的高速增长,面对这些不同版本的依赖,靠手工的方式去解决依赖冲突,版本不一致的问题是非常痛苦和浪费了不必要的时间。而Maven提供了一个优秀的解决方案,它通过月hi个坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如Jar文件)。Maven给这个类库世界引入了经纬,让他们变得有序,于是我们可以借助它;来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

  使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优先于配置(Convention Over Configuration)

  综上所述,Maven作为一个构建工具,不仅能够帮我们自动化构建,还能抽象构建过程,提供构建任务实现,并且跨平台,对外提供一致的操作接口,这一切足以使它称为优秀的,流行的构建工具。

2:为什么需要Maven

     Maven不是Java领域唯一的构建管理解决方案。例如IDE,Make,Ant同样是构建管理的解决方案。

     使用Maven的好处

    • 省时省力,能够得到成熟的构建系统
    • 统一的坐标管理

     IDE

    • IDE依赖大量的手工操作。编译、测试、代码生成等工作都是相互独立的,很难一键完成所有的工作,手工往往意味着低效,意味着容易出错。
    • 很难在项目中统一所有的IDE配置,每个人都有自己的喜好。也正是由于这个原因,一个在机器A上可以成功运行的任务,到了机器B上可能就会失败。

      Make

           最早的构建工具,由Stuart Feldman于1977年在Bell实验室创建

    • Make的强大之处在于它可以利用所有系统的本地命令,尤其是Unix /Linux系统,丰富的功能、强大的命令能够帮助Make快速高效地完成任务。
    • Make与操作系统的绑定是一大弊端,使用Make,就不能实现(至少很难)跨平台地构建,这对Java来说是不友好的。
    • Makefile的语法往往会因一个难以发现的空格或Tab使用错误导致构建失败

      Ant

            Ant不是蚂蚁,而是”另一个整洁的工具”(Another Neat Tool),最早用来构建Tomcat,作者James Duncan Davidson就是因为受不了Makefile的

            语法格式而创建的。

     Maven

           拒绝重复的劳动,拒绝一样的轮子。

3:Maven与极限编程

     极限编程(XP)是一种敏捷开发方法,强调拥抱变化。

     Maven在极限编程中的应用

    • 简单

            Maven暴露了一组一致、简洁的操作接口,能帮助团队成员从原来的高度自定义的、复杂的构建系统中解脱出来,使用Maven现有的成熟的、稳定的组件

            也能简单构建系统的复杂度

    • 交流与反馈

            与版本控制系统结合后,所有人都能执行最新的构建并快速得到反馈。此外,自动生成的项目报告也能帮助成员了解项目的状态,促进团队的交流。

    • 测试驱动开发(TDD)

            TDD强调测试先行,所有产品都应该由测试用例覆盖。而测试是Maven声明周期的最重要的组成部分之一,并且Maven有现成的成熟插件支持业界流行的测

            试框架,如Junit和TestNG

    • 十分钟构建

            十分钟构建强调我们能够随时快速地从源码构建出最终的产品。这正是Maven所擅长的,只需要一些配置,之后用一条简单的命令就能让Maven帮你

            清理、编译、测试、打包、部署、然后得到最终产品。

    • 持续集成(CI)

            CI强调项目以很短的周期(如15分钟)集成最新的代码。实际上,CI的前提是源码管理系统和构建系统。目前业界流行的CI服务器如Hudson

            和CruiseControl都能很好的和Maven进行集成。也就是说,使用Maven后,持续集成会变地更加方便。

    • 富有信息的工作区

            这条实践强调开发者能够快速方便地了解到项目的最新状态。当然,Maven并不会帮你把测试覆盖率报告贴到墙上,也不会在你的工作台上放个东西告诉你

           构建失败了,不过Maven发布的项目报告站点,并配置你需要的项目报告,如测试覆盖率报告,都能帮你把信息推送到开发者眼前。

4:被误解的Maven

          任何事务都是存在两面性的,采用辩证的角度看就好了,你喜欢自然不会误解,你不喜欢,再误解我也无法改变,在这上面大家就各抒己见好了。

5:小结

          Maven对于我来说是一种非常优秀的构建工具,它的出现,解决了之前困扰我很久的包版本不一致,版本冲突的问题,其坐标的定位方法,和提供相关依赖

          的下载,为程序员更加的关注与业务,而不是这种能够避免的错误上。其和IDE的集成,更是极大的方便了软件项目的开发,提升了开发效率。

Maven实战01_Maven简介

标签:接口   自动化构建   方便   实现   jar   工具   复杂   理解   声明   

原文地址:http://www.cnblogs.com/homeword/p/7107874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!