maven与antx

一.Maven与Antx概况:

Antx简介
 

在讲为什么使用maven之前我想说一下,antx,很多人知道ant,其实antx是阿里人自己搞的一套基于ant扩展的在某些方面类似于 mavnen的工具,我们甚至有eclipse的antx插件,可想而知antx在阿里的项目管理中的重要地位。它有很多优秀之处:

1. 可以比较好的支持第二方库

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下

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检查,单元测试报表,单元测试的代码覆盖率报表

 

二.Maven 与Antx关系:

1. Antx仓库到Maven仓库管理
Antx是通过svn来管理第二方库和第三方库的,Maven也是通过第三方工具来实现,目前比较流行的仓库管理软件是Nexus,通过 Maven仓库管理,我们既可以对第三方库进行统一管理,又可以对第二方库甚至SNAPSHOT库进行管理。我们为什么要建立一个本地仓库呢,当然你可以 通过远程的Maven仓库来获取你所需要的jar,但是建立本地仓库更高效,更利于我们的管理,我们在本地,甚至整个公司,集团建立这样一个统一仓库以 后,我们不再需要把所有的jar包都存在本地开发机了,通过Maven我们可以通过很简单的命令来发布我们的第二方库到仓库管理器。这里简单说一下 SNAPSHOT,简而言之,SNAPSHOT就是一个临时版本,Maven可以像管理其他Release版本一样管理它,它在两个模块依赖开发的时候是 相当有价值的,这点我会在“版本管理”一文当中详细描述。
 
2. 转换Antx的第二方库和第三方库到Maven仓库
1)发布第二方库到Maven仓库中去
2)第三方库,比如apache的log4j.jarMaven会自动从Maven的中央仓库下载
3)转换module.xml到pom.xml,Maven根据module的多少只需要一个或者多个pom文件,我们需要根据依赖关系把相应 的依赖以Maven的格式做相应的转换。 

你可能感兴趣的:(maven,antx)