近期做的项目中一直是在使用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格式的文件。所以非常easy维护和书写,并且结构非常清晰。
  2. Ant能够集成到开发环境中:因为Ant的跨平台性和操作简单的特点。它非常easy集成到一些开发环境中去。

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的方式,非常easy就实现build过程的复用。Maven能够为我们提供一个非常舒适的build环境,我们不须要通过build.xml定义繁琐的build过程,仅仅须要告诉这些build过程的plugin,我如今的文件依赖的那些第三方库,我须要实现什么样的build功能,就足够了。那些繁琐的路径配置信息,以及复杂的第三方库下载设置,你通通不用考虑,
Maven
以及它的plugin都帮你实现了。

Maven和Ant的差别的更多相关文章

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

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

  2. Maven与Ant比较

    Maven与Ant比较 0 « 上一篇:Jenkins学习三:介绍一些Jenkins的常用功能» 下一篇:Jenkins学习四:Jenkins 邮件配置 posted @ 2015-03-25 16: ...

  3. Maven 和 Ant 的区别?

    Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面.Ant 为 Java 技术开发项目提供跨平台构建任务.Maven 本身描述 ...

  4. 比较Maven和Ant

    从今天开始,整理maven一系列. Maven 它是什么? 如何回答这个问题要看你怎么看这个问题. 绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可 ...

  5. Java 中,Maven 和 ANT 有什么区别?

    虽然两者都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多, 在基于"约定优于配置"的概念下,提供标准的 Java 项目结构,同时能为应用自 动管理依赖(应用 ...

  6. Maven与Ant使用reportNG代替testng

    大家在使用TestNG时一定会发现其本身的报告生成不但简陋而且相当的不美观,而ReportNG正是一款为TestNG量身定做的报告生成插件,其报告美观.简约.清晰.漂亮的特点让很多TestNG开始慢慢 ...

  7. Mac 下用IDEA时maven,ant打包 (mr 入库hbase)

    现在非常喜欢IDEA,之前在mac 上用的eclipse 经常出现无缘无故的错误.所以转为IDEA.  不过新工具需要学习成本,手头上的项目就遇到了很多问题,现列举如下: 背景描述 在hadoop 开 ...

  8. Maven与Ant的区别

    相同点: Ant和Maven都是基于Java的构建(build)工具. 理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷.Ant是软件构建工具,Maven的定位是软件项目管理和 ...

  9. centos7 安装 maven 和ant git 以及 rocketmq 4.2安装过程(安装成功,调用失败)

    1.maven 安装 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /et ...

随机推荐

  1. Java,泛型类型通配符和C#对照

    c#的泛型没有类型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM并不支持泛型,仅仅是语法糖,在编译器编译的时候都转换成object类型 类型通配符在java中表示的是泛型类型的父类 ...

  2. shu_1171 十->二进制转换(输入输出控制)

    cid=1079&pid=19">http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=19 分析:主 ...

  3. Understanding IIS Bindings, Websites, Virtual Directories, and lastly Application Pools

    In a recent meeting, some folks on my team needed some guidance on load testing the Web application ...

  4. Gym - 100203G Good elements 水+模拟

    题意:good element的定义是a[i]在1~i-1中任取三个数(可以重复)的和能等于a[i] 思路:vis[x]标记一下任两个数的和,处理a[i]时枚举1~i-1判断vis[a[i] - a[ ...

  5. OpenGL编程逐步深入(三)在窗口中显示一个三角形

    这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来. 本节我们以下图所示正方形来讲解OpenGl中的坐标系统.当沿着Z轴负方向看时,可见顶点的坐标必须在这个正 ...

  6. DotNetCore2.1 下Docker使用的学习

    [环节1:CentOS 安装Docker] Step1:通过 uname -r 命令查看你当前的内核版本 uname -r Step2:使用 root 权限登录 Centos.确保 yum 包更新到最 ...

  7. BZOJ3130: [Sdoi2013]费用流(二分,最大流)

    Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识.    最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...

  8. CentOS下部署巡风步骤详解

    本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...

  9. 洛谷 P1324 矩形分割

    P1324 矩形分割 题目描述 出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块. 对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上),而且这木板是不均匀的,从不同的线切 ...

  10. HDU 1429 胜利大逃亡(续)(bfs)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...