Maven和Ant的区别

最近做的项目中一直是在使用maven,但是要知道最早出来的构建工具是Ant,现在Ant依然有好多人再用,于是自己就抽出来时间,学习了一下Ant的基本的使用。这样也能跟好的理解Maven提供的新特性。

首先说一下他们各自的作用:

Ant的作用:是一种基于Java的build工具

  1. 可以用ant编译java类,生成class文件
  2. ant可以自定义标签、配置文件,用于构建。
  3. ant可以把相关层构建成jar包 。
  4. ant把整个项目生成web包,并发布到Tomcat

Ant的优点:

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

Maven的作用: 除了以程序构建能力为特色之外,还提供高级项目管理工具。

Maven除了具备Ant的功能外,还增加了以下主要的功能:

  1. 使用Project Object Model来对软件项目管理;
  2. 内置了更多的隐式规则,使得构建文件更加简单;
  3. 内置依赖管理和Repository来实现依赖的管理和统一存储;
  4. 内置了软件构建的生命周期;

Maven的优点:

  1. 拥有约定,知道你的代码在哪里,放到哪里去
  2. 拥有一个生命周期,例如执行 mvn install
    就可以自动执行编译,测试,打包等构建过程
  3. 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
  4. 拥有依赖管理,仓库管理

整体的比较:

Ant
将提供了很多可以重用的task,例如 copy, move, delete
以及junit
单元测试Maven
则提供了很多可以重用的过程。
我们可以把 Maven
看成是一个"build container"这个容器可以让我们重用从一系列的项目中抽像出来的build过程。

使用过Ant的朋友都会有这样的体会吧。Ant提供的task级别描述,我们可以通过想写shell一样一个Java项目的build过程来进行描述。我们可以写好一个build.xml
文件,来解决我们在Java程序运行编译过程中需要解决的classpath,以及相关参数的配置问题,只有是项目中的主要结构以及依赖的库不变,我们很少去修改build.xml。但是如果我们要开发一个新的项目即使原有项目的build.xml写的即使再好,其能够复用得模块还是比较少的。特别是对项目的结构进行修改后,想不修改build.xml都很困难。这是因为Ant
所提供的可重用的task粒度太小,虽然灵活性很强,但是我们需要纠缠很多细节的东西。

正如你所在使用Servlet
容器时,并没有告诉它如何去解包WAR文件,在你使用Maven
时,你也不需要告诉Maven
如何build你的项目。Maven提供了一套抽象层用来分离项目的build
逻辑。许多人一开始就被Maven所提供的依赖管理(可以通过XML来描述项目所依赖的库的关系)打动,但是使用Maven的主要好处还是它能为提供一个标准的开发构架用来对多个项目进行管理。
依赖管理只是这个标准开发构架所提供的一个副产品。

如果想让Maven实现某个build过程,例如compile,
test, install,我们可以通过写plugin的方式,很容易就实现build过程的复用。Maven可以为我们提供一个很舒适的build环境,我们不需要通过build.xml定义繁琐的build过程,
只需要告诉这些build过程的plugin,我现在的文件依赖的那些第三方库,我需要实现什么样的build功能,就足够了。那些繁琐的路径配置信息,以及复杂的第三方库下载设置,你通通不用考虑,
Maven
以及它的plugin都帮你实现了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-31 23:53:06

Maven和Ant的区别的相关文章

maven与ant的区别

Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷.Ant是软件构建工具,Maven的定位是软件项目管理和理解工具.   Ant特点 1.没有一个约定的目录结构   2.必须明确让ant做什么,什么时候做,然后编译,打包 ?没有生命周期,必须定义目标及其实现的任务序列 ?没有集成依赖管理    Maven特点   1.拥有约定,知道你的代码在哪里,放到哪里去 ?拥有一个生命周期,例如执行 mvn install 就

比较Maven和Ant

从今天开始,整理maven一系列. Maven 它是什么? 如何回答这个问题要看你怎么看这个问题. 绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可发布的构件的工具. 构建工程师和项目经理会说Maven是一个更复杂的东西:一个项目管理工具.那么区别是什么? 像Ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发.像 Maven 这样的一个项目管理工具提供了构建工具所提供功能的超集. 除了提供构建的功能,Maven还可以生成报告,生成Web站点,并

Maven与Ant比较

Ant是软件构建工具,Maven的定位是软件项目管理和理解工具.Maven除了具备Ant的功能外,还增加了以下主要的功能: 1)使用Project Object Model来对软件项目管理: 2)内置了更多的隐式规则,使得构建文件更加简单: 3)内置依赖管理和Repository来实现依赖的管理和统一存储: 4)内置了软件构建的生命周期: 一 POM(Project Object Model)与项目管理 每一个Maven工程都包含一个pom.xml文件,其他存储了该工程相关的信息,从而达到一定的

Maven和Ant的差别

近期做的项目中一直是在使用maven.可是要知道最早出来的构建工具是Ant,如今Ant依旧有好多人再用.于是自己就抽出来时间.学习了一下Ant的主要的使用.这样也能跟好的理解Maven提供的新特性. 首先说一下他们各自的作用: Ant的作用:是一种基于Java的build工具 能够用ant编译java类.生成class文件 ant能够自己定义标签.配置文件,用于构建. ant能够把相关层构建成jar包 . ant把整个项目生成web包.并公布到Tomcat Ant的长处: 跨平台性:Ant是纯J

一个基于Maven项目Ant的构建模板

一般的我创建的项目都是基于Maven的,但是很多人也喜欢用Ant打包jar,或者war.我一般都会在项目中既包含Maven的pom.xml,也会有ant的build.xml 只要在控制台执行: ? 1 mvn dependency:copy-dependencies 然后执行: ? 1 ant OR ant javadoc 就会打包程序或者生成项目的Javadoc文档. 打包的程序一般在:${project.path}/target/dist/${version}/ JavaDoc文档一般在${

Maven Optional & Exclusions 使用区别

Optional和Exclusions都是用来排除jar包依赖使用的,两者在使用上却是相反. Optional定义后,该依赖只能在本项目中传递,不会传递到引用该项目的父项目中,父项目需要主动引用该依赖才行. Exclusions则是主动排除子项目传递过来的依赖. 用法区别 Project-X -> Project-A Project-A -> Project-B <project> ... <dependencies> <dependency> <gr

maven package install deploy区别

package 命令完成了项目编译.单元测试.打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库install 命令完成了项目编译.单元测试.打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库deploy 命令完成了项目编译.单元测试.打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库 原文地址:http

MyEclipse下Maven的安装配置

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 发文时,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具.遗憾的是,Ant 的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要.通过检查 Ant 构建文件,很难发现项目的相关性信息和其它信息(如开发人员/拥有者.版本或站点主页). Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具.由于 Maven 的缺省构建规

转:maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd