Apache Ant和Apache Maven的区别

分类: ANT Maven 2013-12-10 18:47 1477人阅读 评论(26) 收藏 举报
———摘自《maven权威指南》
Apache Ant
1、Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
2、Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。
Apache Maven
1、Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes,然后在 target生成一个 JAR 文件。
2、Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
3、Maven 有一个生命周期,当你运行 mvn install的时候被调用。这条命令告诉 Maven
执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven
运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
Maven
以插件的形式为一些一般的项目任务提供了内置的智能。如果你想要编写运行单元测试,你需要做的只是编写测试然后放到/usr/local/hudson
/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src
/test/java,添加一个对于 TestNG 或者 JUnit 的测试范围依赖,然后运行 mvn test。
如果你想要部署一个web 应用而非 JAR ,你需要做的是改变你的项目类型为 war ,然后把你文档根目录置为
/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production
/workspace/content-zh/src/main/webapp。当然,你可以用 Ant
做这些事情,但是你将需要从零开始写这些指令。使用 Ant ,你首先需要确定 JUnit JAR 文件应该放在哪里,然后你需要创建一个包含这个
JUnit JAR 文件的 classpath
,然后告诉 Ant 它应该从哪里去找测试源代码,编写一个目标来编译测试源代码为字节码,使用 JUnit 来执行单元测试。没有诸如
antlibs 和 lvy 等技术的支持(即使有了这些支持技术),Ant 给人感觉是自定义的程序化构建。
项目中一组高效的坚持约定的 Maven POM ,相对于 Ant 的配置文件,只有很少的 XML 。
Maven 的另一个优点是它依靠广泛公用的 Maven 插件。所有人使用 Maven Surefire 插件来运行单元测试,如果有人添加了一些针对新的测试框架的支持,你可以仅仅通过在你项目的 POM 中升级某个特定插件的版本来获得新的功能。
使用 Maven 还是 Ant 的决定不是非此即彼的,Ant
在复杂的构建中还有它的位置。如果你目前的构建包含一些高度自定义的过程,或者你已经写了一些 Ant
脚本通过一种明确的方法完成一个明确的过程,而这种过程不适合 Maven 标准,你仍然可以在Maven 中用这些脚本。作为一个 Maven
的核心插件, Ant 还是可用的。自定义的插件可以用 Ant 来实现,Maven 项目可以配置成在生命周期中运行 Ant 的脚本。

Apache Ant和Apache Maven的区别的更多相关文章

  1. Apache Ant 简介和配置

    Apache Ant 简介     Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展.   ...

  2. gradle , maven , ant , ivy , grant之间的区别

    java项目构建工具 gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具. 它抛弃了基于XML的各种繁琐配置.它使用一种基于Groovy的特 ...

  3. Maven和Ant简介以及两者的区别

    Maven 一.Maven简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 目前,绝大多数开发人员都把 Ant 当作 Java 编程 ...

  4. Apache Ant运行时Unable to locate tools.jar解决方法

    下载Apache Ant 一.解压ant安装包在D:\ant下 二.环境变量配置 ANT_HOME D:\ant\apache-ant-1.9.0 CLASSPATH ;%ANT_HOME%lib; ...

  5. 使用 apache ant 轻松实现文件压缩/解压缩(转)

    原文地址:http://blog.csdn.net/irvine007/article/details/6779492 maven配置ant包: <dependency> <grou ...

  6. Archive for required library: 'E:/repository/org/apache/ant/ant/1.7.1/ant-1.7.1.jar' in project 'test02' cannot be read or is not a valid ZIP file

    Archive for required library: 'E:/repository/org/apache/ant/ant/1.7.1/ant-1.7.1.jar' in project 'tes ...

  7. [Java] Apache Ant 构建基础教程

    环境:Ubuntu 12.04, java 1.7.0, ant 1.8.2. 前言 Apache Ant 是一个软件自动化构建工具,构建过程包括编译.测试和部署等.它和 Make 工具相似,但由 J ...

  8. spark mllib配置pom.xml错误 Multiple markers at this line Could not transfer artifact net.sf.opencsv:opencsv:jar:2.3 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org

    刚刚spark mllib,在maven repository网站http://mvnrepository.com/中查询mllib后得到相关库的最新dependence为: <dependen ...

  9. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter与org.apache.struts.dispatcher.FilterDispatcher是什么区别?

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter与org.apache.struts.dispatcher.F ...

随机推荐

  1. elasticsearch聚合--桶(Buckets)和指标(Metrics)的概念

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 聚合的两个核 ...

  2. [转][Android] ListView中getView的原理+如何在ListView中放置多个item

      ListView 和 Adapter 的基础 工作原理: ListView 针对List中每个item,要求 adapter “给我一个视图” (getView). 一个新的视图被返回并显示 如果 ...

  3. ELM327 OBD to RS232 Interpreters

    http://elmelectronics.com/DSheets/ELM327DS.pdf

  4. .Net4.0并行库介绍——Cancellation Framework

    在.net 4.0中,引入了一个新的类CancellationToken,这个类基本上集成了我们各种常用的取消方式,在并发任务中非常有用. 同步模式下的取消: 一种比较常见的需要支持取消功能的的是一些 ...

  5. win7 系统装SQLServer2000 成功

    昨天在win7上装SQLServer数据库,写一下体会.首先,如果以前安装的话,要删除干净.我也找了半天的网络资料.1.把原来SQLServer的安装目录 C:\Program Files\Micro ...

  6. 【堆栈平衡的说明太有才了】转贴自Jim&#39;s blog

    先说明.原发者iso9001 http://www.ghoffice.com/bbs/read.php?tid-35165.html他提供的地址(当他是个指针好了:P)http://ajiannet. ...

  7. Workflow:采用坐标变换(移动和旋转)画箭头

    背景 流程设计器的连线部分需要画一个箭头代表连接的方向,下图是期望的效果: 刚开始我准备采用三角函数(sin和cos)来计算三角的坐标,实现的过程真不爽(有兴趣的朋友可以试试),就在完工的时候,突然想 ...

  8. Andorid之Annotation框架初使用(三)

    线程使用: @Background这个是使用了cached thread pool executor , 阻止开启过多的线程 可以为@Background指定一个id,用于随时终止线程的操作(Back ...

  9. MFC DLL对话框调用

    Regular Dll using shared MFC DLL extern "C" __declspec(dllexport) void Show() {   AFX_MANA ...

  10. cas 获取session中的用户信息

    <%Object object =request.getSession().getAttribute("_const_cas_assertion_");Assertion a ...