zoukankan      html  css  js  c++  java
  • (一)Maven介绍

    =======================================

    只针对Java web方向开发maven的使用

    =======================================

    一.什么是Maven

    1. 什么是Maven?

    一个对Maven比较正式的定义是这么说的:

      Maven是一个项目管理工具,它包含了一个项目对象模型(POM:project object model),一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑

    2.Maven能解决什么问题?

      我们知道,项目开发不仅仅是写写代码而已,期间会伴随着各种必不可少的事情要做,下面举例感受一下:

      2.1我们需要引入各种jar包,尤其是比较大的工程,引用的jar包往往有几十个乃至上百个,每用到一个jar包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的jar包冲突,版本冲突。

      2.2我们辛辛苦苦的写好了java文件,可是只懂0和1的白痴电脑却完全读不懂,需要将它编译成二进制字节码。好歹现在这项工作可以由各种集成开发工具帮我们完成,Eclipse、IDEA等都可以将代码即时编译。当然,如果没事也可以用记事本来敲代码,然后用javac命令一个个去编译。。。

      2.3世界上没有不存在bug的代码,计算机喜欢bug就和人们总是喜欢美女和帅哥一样,为了追求美为了减少bug,因此写完了代码,我们还要写一些单元测试,然后一个个的运行来检验代码质量。

      2.4再优雅的代码也是要作为产品卖的,我们后面还要把代码与各种配置文件、资源整合到一起,定型打包,如果是web项目,还需要将之发布到服务器,供人蹂躏。

      试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成web站点,你会心动吗?Maven就可以解决上面所提到的这些问题。

    3.Maven的优势

      要能够将项目运行起来,就必须将该项目所依赖的一些jar包添加到工程中,否则项目就不能运行。试想,如果具有相同架构的项目有多个,那我们就需要将这一份jar包复制到多个不同的工程中。我们一起来看一个CRM项目的工程大小:

      使用传统Web项目构建的CRM项目如下:

    原因主要是因为上面的Web程序要运行,我们必须将项目运行所需要的jar包复制到工程目录中,从而导致了工程很大。

    同样的项目,如果我们使用Maven工程来构建,会发现总体上工程的大小会少很多。如下图:

    二.Maven的两个经典作用

    1.Maven的依赖管理

      Maven的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务,Maven展示出了它对处理这种情形的高度控制。

      传统的Web项目中,我们必须将工程所依赖的jar包复制到工程中,导致了工程变得很大。那么maven工程是如何使得工程变得很小呢?

      分析如下:

    通过分析发现,maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需的jar包坐标,这样就很好的避免了jar直接引入进来,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml文件中的坐标,到一个专门用于存放jar包的仓库(maven仓库)中根据坐标从而找到这些jar包,再把这些jar包拿去运行。

                   maven仓库中,junit的坐标

    那么问题来了:

    第一:存放jar包的仓库长什么样?

    第二:通过读取pom.xml文件中的坐标,再到仓库中找到jar包,会不会很慢,从而导致这种方式不可行?

    第一个问题:存放jar包的仓库长什么样,后面会介绍仓库的分类

    第二个问题:通过pom.xml文件配置要引入jar包的坐标,再读取坐标并到仓库中加载jar包,这样我们就可以直接使用jar包了,为了解决这个过程中速度慢的问题,maven中也有索引的概念,通过建立索引,可以大大提高加载jar包的速度,使得我们认为jar包基本跟放在本地的工程文件中再读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录好比是索引,方便我们查找。

    2.项目的一键构建

      我们的项目,往往都要经历编译、测试、运行、打包、安装、部署等一系列过程。

      1.什么是构建:

      指的是从译、测试、运行、打包、安装、部署整个过程都交给maven进行管理,这个过程称为构建。

      2.一键构建:

      指的是maven一个命令完成整个构建过程。

      3.Maven规范化构建流程如下:

      

  • 相关阅读:
    八月第二周学习心得
    七月第二周学习心得
    八月第一周学习
    八月第三周学习心得
    7月第一周学习心得
    php mysql_error()函数用法详解
    php mysql_select_db
    php中的释放“语句”unset和释放“函数”mysql_free_result()
    JavaScript]Cookie详解(转)
    Javascript类型转换的规则
  • 原文地址:https://www.cnblogs.com/kxx-1/p/13387481.html
Copyright © 2011-2022 走看看