好程序员Java培训分享maven-概述一、为什么要使用Maven,在没有Maven之前我们的开发存在的问题




java maven无法引入HWPFDocument_maven ant包引入不了



  项目如果需要引入第三方的开源库就必须去官方网站或别的途径去下载jar包,然后将下载袭来的jar包必须手动复制,粘贴到WEB-INF/lib目录下,当某些jar包有依赖的时候,还要去下载对应的依赖jar包,如果不小心漏掉了,程序运行直接出错

  jar包去哪里下?

  要对jar包升级怎么办?

  jar包依赖冲突了怎么办?

  然后项目写完之后,我们需要对项目进行编译,测试,打包,部署等一系列工作,操作起来都不是特别的简洁,所以这个时候Maven就出现了

  二、什么是Maven

  Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中

  POM怎么理解?

  我们使用Java是面向对象编程,对象就是我们的类

  而Maven是面向项目,把我们的项目看做成是一个对象来进行管理

  是一个跨平台的项目管理工具,主要服务于Java平台的项目构建、依赖管理和项目信息管理。

  项目构建:通过插件帮你完成项目的清理、编译、测试、打包、部署。比如之前除了编写源代码,我们每天有相当一部分时间花在了编译、运行单元测试、生成文档、打包和部署等繁琐而又不得不做的工作上

  依赖管理:通过坐标从maven仓库导入java类库(jar文件)。比如之前项目导入jar。是通过copy方式导入项目中,而且还会存在jar之间的依赖和冲突。而maven解决了这些问题,帮我们下载Jar包

  仓库管理:提供统一管理所有 Jar 包的工具;

  项目信息管理:项目描述、开发者列表、版本控制系统地址等。比如发布版本之后我们可能还要对版本进行升级

  三、其它流行的构建工具(了解)

  在Java的世界里,目前在被使用的常用构建工具有三个:Ant,Maven,Gradle。

  Ant的核心是由Java编写,采用XML作为构建脚本,这样就允许你在任何环境下,运行构建。Ant基于任务链思想,任务之间定义依赖,形成先后顺序。缺点是使用XML定义构建脚本,导致脚本臃肿,Ant自身没有为项目构建提供指导,导致每个build脚本都不一样,开发人员对于每个项目都需要去熟悉脚本内容,没有提供在Ant生态环境内的依赖管理工具。

  Maven团队意识到Ant的缺陷,采用标准的项目布局,和统一的生命周期,采用约定由于配置的思想,减少构建脚本需要的编写内容,活跃的社区,可以方便找到合适的插件,强大的依赖管理工具。缺点是采用默认的结构和生命周期,太过限制,编写插件扩展麻烦,XML作为构建脚本。

  而Gradle同时拥有Ant和Maven的优点,它是基于Groovy的DSL,提供声明式的构建语言,采用标准的项目布局,但拥有完全的可配置性,就是可以改,通过插件,提供默认的构建生命周期,也可以自己定义任务,单独运行任务,定义任务间的依赖,强大的依赖管理工具,与Maven和Ivy仓库结合,与Ant天生兼容,有效的重用Ant的任务,多种实现插件的方式,强大的官方插件库,从构建级别,支持从Ant或者Maven的逐步迁移,通过包装器,无缝的在各个平台运行。

  如何识别项目构建工具,一般来说,一个项目的根目录中就会包含构建工具的配置文件信息,也表明了该项目使用的构建工具,通常有如下的对应关系

  build.xml - 该项目使用Ant构建

  pom.xml - 该项目使用Maven构建

  build.gradle - 该项目使用Gradle构建