Apache Ant和Apache Maven的区别

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 的脚本。

时间: 2024-10-06 19:54:37

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

Apache Ant 简介和配置

Apache Ant 简介 Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展. 本文主要内容有: 对Ant的简介 介绍常用的Ant脚本 Ant的安装 Apache Ant是Apache基金会下的一个项目, 官网:http://ant.apache.org/ 下载地址:http://ant.apache.org/bindownload.cgi 根据不同的平台下载不同的压缩包,直接解压到安装

[Java] Apache Ant 构建基础教程

环境:Ubuntu 12.04, java 1.7.0, ant 1.8.2. 前言 Apache Ant 是一个软件自动化构建工具,构建过程包括编译.测试和部署等.它和 Make 工具相似,但由 Java 实现,所以要求 Java 运行环境,非常适合构建 Java 程序. Ant 和 Make 明显不同之处在于 Ant 使用 XML 来表述构建过程与依赖关系,而 Make 使用 Makefile 格式文件.Ant 默认的构建文件名为 build.xml.每一个 build.xml 文件包含一个

Apache Ant安装 验证

1.下载Apache Ant 去官网下载ant,官网地址:http://ant.apache.org/ 我下载的是apache-ant-1.10.1-bin.zip 直接解压,放到制定目录下,如C:\apache-ant-1.10.1 2.配置环境变量 按照如下格式配置环境变量: ANT_HOME D:\SWE\apache-ant-1.8.4 CLASSPATH ;%ANT_HOME%\lib; PATH  ;%ANT_HOME%\bin; 3.验证. 安装完成之后,输入ant -versio

Apache Http Server和Tomcat 之区别

转自:Apache Http Server和Tomcat 之区别 Apache官方网站:http://www.apache.org/Tomcat官方网站:http://tomcat.apache.org/ 1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet). 3. Apache是普通服务器

Apache静态编译与动态编译区别

静态编译: 在编译时,已经把相关模块编译进httpd二进制文件中不用再 httpd.conf 中在 LoadModule 来加载,只要在  <ifmodule></ifmodule> 中来配置就可以了. 动态编译: 编译的时候,使用 enable-module=shared  或者 enable-modules-shared=module 来动态编译. 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个 module.so  文件.你想用,就在ht

Apache Ant学习笔记(3):在eclipse中使用Apache Ant

在eclipse中使用Apache Ant是很简单的,因为eclipse本身就集成了Apache Ant.以下是一个Hello World. 1.创建一个工程test,如下: 2.在工程根目录之下创建一个build.xml文件,eclipse将自动识别并将它标记为Apache Ant的构建文件,如下: 3.打开build.xml,这时文件中没有内容,需要根据自己的需求编写构建文件 4.编写构建文件,简要编写如下: 5.打开Outline视图,在此视图中显示了build.xml文件的元素结构,可见

NoGoalSpecifiedException : http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException

No goals have been specified for this build. Maven Buid 时出现下面这个错误: [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format < plugin-prefix > : < goal > or < plugin-group-id >

Android NDK中的Apache ANT和GUN Make

Android NDK是Android软件开发包SDK的相关工具集,用来扩展Android SDK的功能,从而使开发人员能够使用机器代码生成的编程语言(如C.c++和汇编语言)实现一些对代码性能要求较高的模块并将这些模块嵌入到Android应用程序中. Apache ANT是命令行构建工具,可以驱动任何根据目标和任务描述的过程. 安装命令 sudo apt-get install ant GNU Make是一种构建工具,用于控制应用源代码的可执行代码和其他部分代码的生成. 安装命令 sudo a

【Apache Ant】ANT解析以及ANT在myEclipse中的使用

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 维基百科上对Ant的介绍: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. 由Apache软件基金会所提供.默认情况下,它的buildfile(XML文件)名为build.xml.每一个buildfile含有一个<project>和至少一个预设的<target>,这些targets包含许多ta