初学Maven

在软件开发中,除了对需求的分析,软件的设计,代码的编写之外,还有一些零碎的工作,比如:项目的清理,编译,发布,以及项目依赖的管理。这些日常行为虽然不会创造实际的代码,却会影响我们的工作效率,相信管理过依赖和代码库的朋友应该会熟悉这些琐碎日常对开发的影响,而Maven则是则是用来简化这些事务的工具。之前在工作之中接触过Maven,这里简单说一下我对这个工具的理解。

Maven是apache旗下的项目,是一个项目管理工具。它的功能主要分为两块:

  • 依赖管理,可以很方便的管理项目所依赖的各种组件;
  • 项目构建。项目的编译,测试,打包,发布等等。

依赖管理
Maven通过pom.xml来描述项目的以来,对其进行抽象的管理;而将具体的依赖组件,放到本地仓库下,供项目在构建过程中使用。

pom.xml文件是对整个项目的一个逻辑逻辑上的描述;一切关于项目的描述,都在<project>元素下;对项目本身的描述,由<groupId>,<artficatId>,<version>三维来确定。通常情况下,不同项目的信息是不同的。而项目的依赖则是在<dependencies>下,由各个<dependency>标签来进行管理。结合注释,就可以很清楚地描述一个项目的依赖组件,避免混乱。

仓库则是对项目依赖实际上的支持。Maven有一个中央仓库,里面存储了大部分主流的组件,可供开发人员下载,而这些组件的识别,则是通过之前的pom.xml来开始的。简单的说,就是只要编写好了pom.xml文件,在网络顺畅的情况下,是可以比较轻松地将项目构建起来的。当然,中央仓库也可能会出现不够用的情况,比如大量访问导致其速度下降,或者有的组件在中央仓库中没有,这些问题,我们可以通过Nexus搭建私服来解决。Maven按照pom.xml的指引,将依赖包从中央仓库或者私服(统称为远程仓库)下载到本地仓库后,然后统一管理,以免各种依赖包四处散乱。

Maven在创建项目时,可以选择Archtype(骨架)来进行创建,不同的archtype默认携带了不同的组件,对应不同的项目。

简单的情况下,我们在编辑好pom.xml后稍加操作,就可以将项目创建完成,并且可以清晰管理其依赖;

项目构建
Maven是通过生命周期来完成的。Maven有三个生命周期:clean,default,site,分别对应着清理,核心(这里东西比较多,包括检查,测试,大宝,提交到本地仓库,暂时称呼为“核心”吧),部署。这三个生命周期是是相互独立的。

Maven生命周期内部有目标。比如clean内部有三个目标:pre-clean,clean,post-clean。执行的时候,假如我执行了clean,pre-clean也会执行,执行了post的时候,pre-clean和clean都会被执行。其他的两个生命周期里面也是由多个目标构成,执行的顺序也是如此,这里就不叙述了。请参考:Maven生命周期详解

对于每个目标,他们的行为并不是固定的,而是由Maven插件来决定的。我们也可以自己来编写Maven插件来对项目。这些也是可以在pom.xml里配置的。

在设定正确的情况下,Maven可以帮助我们一次性完成项目的清理,编译,测试,打包等功能,一定程度上解放了开发者。

本文是在我看了许晓斌老师的《Maven实战》之后的自己的理解,只能算个大概吧。上面的链接也是指向许老师的博客。

明天还要找工作,赶紧去看看面试题

写完之后看看如何使用bbcode来对写完的东西进行排版;


2016-02-23

猜你喜欢

转载自1204391005.iteye.com/blog/2278364