浅谈maven与ant web
原文连接:http://yinwufeng.iteye.com/blog/752406服务器
在讲为何使用maven以前我想说一下,antx,不少人知道ant,其实antx是阿里的牛人本身搞的一套基于ant扩展的在某些方面相似于mavnen的工具,咱们甚至有eclipse的antx插件,可想而知antx在阿里的项目管理中的重要地位。它有不少优秀之处:eclipse
1. 能够比较好的支持第二方库maven
2. 支持项目之间的依赖和继承工具
3. antx能够用jelly来写插件单元测试
4. car包的支持,这里简单介绍下car包:测试
car是war包的一种中间格式,在打包的时候包含vm页面,webx.xml,classes等资源,可是没有包含
WEB-INF/lib,一个war包能包含多个car 包,在war包打包的时候,可以把web工程依赖的car中的jar
包,包括传递依赖的jar包,一块儿合并到WEB-INF/lib下spa
5. auto config: auto-config.xml配置项目中须要被替换的资源插件
那咱们为何还须要引入maven呢?代理
先说一下Antx在存在哪些问题:
1. Antx第三方库的管理比较复杂,若是某个项目须要一个新的jar包或者新版本的jar包,则须要走一个严格申请流程,而且须要本身提交相关的jar包
2. Antx对jar包的版本控制,changelist等没有工具上的支持,致使不少项目都是1.0-SNAPSHOT从头用到尾,致使包版本比较很差控制。
3. Antx对SCM打包部署的支持不是很强。
4. Antx在于IDE的兼容性上存在问题,为了让eclipse支持antx,咱们须要单独写一个antx插件来让eclipse支持antx,对于其余的一些比较好的IDE好比Intellij IDEA,是不支持antx的。
5. 如今IDE不少都有一键式DEBUG的功能,包括集成对应用服务器的支持,antx在这方面存在不足。
Maven能解决这些问题么,还有更好的优点么, 答案是YES
1. Maven的库是由开源组织维护,不须要咱们再花精力去管第三方库,即便本身维护,也比较方便。
2. Maven对jar包的版本管理有工具上的支持,好比将Release版本和Snapshot版本区分开,有利于SCM管理。
3. Maven是标准,用过的人多,不须要额外培训。
4. Maven的plugin比较多,能够有更多功能,Maven现有体系比较开放,采用的技术相对比较通用和成熟,plugin的机制也能够便于咱们扩展更多功能。
5. Maven的库下载是即用即下,不须要实现所有down下来。Maven的插件也是自动升级,能够方便的
咱们扩展新功能。
6. 能够很方便的与eclipse, IDEA这样的主流的IDE集成
7. 仓库管理器:它的出现有两个目的:首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理,其次它为你的组织提供了一个可部署你组织内部生成的构件(第二方库)的地方。
8. 版本管理功能,这里的版本管理不是指第三方库的版本管理,而是项目的版本管理
9. 站点功能:它的出现让咱们能够对项目的状态一目了然,能够自动的把项目的状态和各类报表以站点的形式发布到内部网或者外部网,能够随时随地查看项目状态。 有不少中报表能够选择,包括,doc生成,代码规范的检查,自动bug检查,单元测试报表,单元测试的代码覆盖率报表