Maven入门(1) 之 Maven介绍

1.Maven的介绍

    给大家介绍一款非常强大的项目管理工具,这个管理工具它是Maven,单词的正确发音是[ˈmeɪvn],在美国是一个口语化的词语,代表专家、内行的意思。

    有一个对那位比较正式的定义是这么说的:Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

    读完这段话之后,相信大家对于Maven到底能做什么,Maven在我们的项目开发中到底扮演怎样的角色还是比较迷茫的。不过没关系,我们下面将通过4个在实际开发中经常遇见的问题来更加通俗的告诉大家Maven到底能做什么。

问题1:

    大家都知道,凡是开发项目我们就要用到各种各样的jar包,而且项目越大,需要导入的jar包就越多,往往我们开发一个项目要在里面导入几十个,甚至上百个jar包。jar包多了,随之而来就是各种各样的jar包冲突,jar包冲突如果手动解决起来是非常令人抓狂的,作为一个开发人员,我们不可能天天被这种问题所困扰,可是如果这个项目现在交Maven来管理,那么这些假包冲突解决起来就非常的简单。这是Maven能为我们做的第一件事情。

(总结:解决项目中jar包版本冲突)

问题2:

    我们辛辛苦苦写好了Java文件,计算机他是不认识的,计算机它只认Java编译成之后变成的class文件,也就是0和1组成的二进制文件,那么好在这个工作现在各种各样的工具都比较强大,可以代替我们来完成,你比如Eclipse、IDEA都可以帮我们把Java文件编译成class文件,今天要给大家介绍的这款工具Maven,也是可以帮我们做这件事情的。这是Maven能为我们做的第2件事情。

(总结:maven有编译源码功能)

问题3:

    写代码难免会出现各种各样的问题,为了避免最终问题越来越多,那么在开发的时候就要不断的进行单元测试,那么代码越来越多,所以单元测试也就越来越多。不管有多少单元测试,之前的做法就是一个一个的来测,可是现在如果让Maven来管理我们的项目,他那可以把指定目录下的单元测试全部一次性执行完成,并且告诉你哪些是正确的,哪些是有异常的,这个功能就是Maven可以为我们做的第三件事情。

(总结:统一执行单元测试)

问题4:

    那么代码开发完成之后,是要变成产品来出售的。这个再变成产品之前,我们必须做的一件事情就是给这个项目打包,那么不管用Eclipse还是IDEA,咱们都必须自己手动打包,假如我们用了Maven来管理我们的项目,这个打包只用一个命令直接搞定。

(总结:项目打包方便)

    可见Maven从我们一开始开发代码,直接到最后项目运行到线上,整个过程中他都可以帮我们来解决各种各样的问题。


2.依赖管理


      这里介绍Maven其中一个核心功能,这个核心功能我们将通过一个对比来引出,首先大家看下面这张图,

图1

        这张图是使用传统web工程开发好的一个CRM项目,所占磁盘空间大小的图,那么大家可以看到一个开发好的CRM项目所占的磁盘空间是21兆,我可以提前告诉大家,整个CRM项目开发完成里边一共加文件没有超过20个,那么连20个java文件都没有的,一个项目如何能在21M磁盘空间呢?可以大胆猜测,其中大多数磁盘空间是由项目中的jar包所占有的。

接下来对比另外一张图,

图2

      这张图是使用Maven开发好的一个CRM项目,这个项目所使用的框架和刚才CRM项目一样,里边的功能和刚才CRM项目也是一模一样,那么它所占的磁盘空间只有124k。

    这里有一个疑问,Maven开发的CRM项目和传统web工程开发的CRM项目所使用的框架是一模一样的。既然用到了框架,那么就必须会调用框架中的工具类,要调用框架中的工具类,那Maven项目中又不导入框架中的jar包,他的jar包去拿了呢?

给大家画一张图来解释一下。

图3

      我们先来看传统web工程开发的CRM项目,这种项目jar包是在项目中。Maven开发的CRM项目,这种项目jar包不在项目中。那么它的jar包到底去哪了呢?

      Maven会把jar包统一放置在一个叫jar包仓库的地方。那么它的jar包并没有在项目中放,它是放置在jar包的仓库中了,那么项目凡是运行和编译的时候肯定需要找到所对应的jar包,他是怎么找到的呢?

      这里又有一个概念叫jar包的坐标。当Maven工程编译或者运行的时候,Maven会通过jar包的坐标去仓库找到对应的jar包。那么这个时候如果我说Maven工程大大的节省了我们的磁盘空间,那么有的小伙伴就会说人家传统web工程jar包放在项目中,Maven项目的jar包没有放在项目中,是放在仓库中的,那磁盘空间并没有节省呀?

      这个时候我们可以把这个范围想得大一点,假如说有10个传统的web工程,那么我们是否每个项目中都要放一套jar包呢?对,答案是一定的,接下来我们来想,这边有10个Maven工程,那么这10个Maven工程我都可以不放jar包,而所有项目运行所需要的jar包。都从仓库中来找。那么这一次我在说Maven工程大大节省了我们的磁盘空间应该没有疑问了。

      其实Maven 它不单为我们节省了磁盘空间,他更大的一个功能是它符合了我们Java开发经常说的一个代码可重用。其实上面描述了一大段,主要是在告诉大家Maven第1个核心功能,它的名字叫依赖管理。

      用一句话来总结什么叫依赖管理:依赖管理就是maven工程对jar包的管理过程。具体再说细一点,就是传统项目我们直接把jar包放在项目中,而maven工程真正的jar包是放在jar包的仓库中,而项目中使用放置jar包的坐标,当我们项目编译或运行的时候,maven工程会通过jar包的坐标,去jar包的仓库中找到对应的jar包,那么这个就是我们今天要介绍maven的第1个核心功能依赖。

3.一键构建

      介绍Maven另外一个核心功能一键构建,那么首先我们必须要弄清楚什么是构建项目。

      对项目进行编译、测试、运行、打包、安装、部署,任何一步操作,其实都是在构建项目。只不过是这些操作对项目构建的程度不一样而已。

      那么Maven的一键构建,就是不在使用本地安装的tomcat,而是使用maven自身集成的tomcat插件,来完成这些操作的过程,这就是Maven的一键构建

如下图

图4

      那么Maven的一键构建和本地安装的tomcat的运行项目到底有哪些不一样的?

      我们来做一个简单对比,假如说我们现在要运行一个项目,先来说使用本地安装的tomcat,我们必须自己把整个项目打成包,放在tomcat的安装目录下WebApp文件夹下。然后再bin目录下找到startup命令,双击startup命令才能把项目运行起来。

那么我们使用Maven来运行一个项目步骤是什么呢?

      我们来看一下,一个非常简单的Maven工程,可以看到Maven工程的结构目录里边有一个非常特别的文件pom.xml,之前我们说到的Maven工程jar包的坐标就写在这里边。

      我们可以在命令提示符中,

      进入项目目录,然后直接输入mvn tomcat:run,

      项目就能够直接运行起来,并且在日志中提供给我们访问的地址。

      不用像上边打好war包,放在tomcat中,才能运行。


      可以明显看到,使用Maven的一键构建要比直接使用tomcat部署项目便捷。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355