Maven和Ant

来源:互联网 发布:中国白酒出口数据 编辑:程序博客网 时间:2024/05/06 23:58
1. Ant的概念
  当一个代码项目大了以后,每次重新编译、打包、测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译、打包、测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
  每个Ant脚本(缺省叫build.xml)中设置了一系列任务(target),比如对于一个一般的项目可能需要有以下任务:
  * 任务1:usage 打印本脚本的帮助信息(缺省)
  * 任务2:clean <-- init 清空初始化环境
  * 任务3:javadoc <-- build <-- init 生成JAVADOC
  * 任务4:jar <-- build <-- init 生成JAR
  * 任务5:all <-- jar + javadoc <-- build <-- init 完成以上所有任务:jar javadoc
  多个任务之间往往又包含了一定的依赖关系:比如把整个应用打包任务(jar)依赖于编译任务(build),而编译任务又依赖于整个环境初始化任务(init)等。

  注:我看到很多项目的ant脚本中的命名基本上都是一致的,比如:编译一般叫build或者compile;打包一般叫jar或war;生成文档一般命名为 javadoc或javadocs;执行全部任务all。在每个任务的中,ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。

       Ant与一般基于命令的工具有所不同,它是Java类的扩展。Ant运行需要的XML格式的文件不是Shell命令文件。它是由一个Project组成的,而一个Project又可分成可多target,target再细分又分成很多task,每一个task都是通过一个实现特定接口的java类来完成的。

      Ant 没有一个约定的目录结构, ›必须明确让ant做什么,什么时候做,然后编译、打包 。

›      Ant 没有生命周期,必须定义目标及其实现的任务序列, ›没有集成依赖管理。  

   Ant的优点:

  Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。
  跨平台性。Ant是纯Java语言编写的,因此具有很好的跨平台性。
  操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。
  Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建的文件是XML格式的文件,所以很容易维护和书写,而且结构很清晰。
  Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。

2. Maven 的概念

      Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
  Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作
  此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
Maven 常用命令
  mvn archetype:create 创建Maven项目
  mvn compile 编译源代码
  mvn test-compile 编译测试源代码
  mvn test 运行应用程序中的单元测试
  mvn site 生成项目相关信息的网站
  mvn clean 清除项目目录中的生成结果
  mvn package 根据项目生成的jar
  mvn install 在本地Respository中安装jar
  mvn eclipse:eclipse 生成eclipse项目文件


›         Maven  拥有约定,知道你的代码在哪里,放到哪里去; 

 ›拥有一个生命周期,例如执行 mvn install 就可以自动执行编译、测试、打包等构建过程,  ›只需要定义一个pom.xml,然后把源码放到默认的目录;

Maven帮你处理其他事情 ›拥有依赖管理,仓库管理

 

http://baike.baidu.com/view/336103.htm


3. Maven和Ant区别

      目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为 make 的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员/拥有者、版本或站点主页)。

        Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven 和 Ant 是针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant 代表两个差异很大的工具,所以我将只说明这两个工具的等同组件之间的区别。


原创粉丝点击