您的位置:首页 > 职场人生

java面试题:Maven 和 ANT 有什么区别?

2017-08-23 09:46 435 查看
虽然两者功能上都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多,在基于“约定优于配置”的概念下,提供标准的Java 项目结构,同时能为应用自动管理依赖(应用中所依赖的 JAR 文件),具体差异见下文。

Ant仅仅是软件构建工具,而Maven的定位是软件项目管理和理解工具。

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

使用Project Object Model来对软件项目管理;

内置了更多的隐式规则,使得构建文件更加简单;

内置依赖管理和Repository来实现依赖的管理和统一存储;

内置了软件构建的生命周期;

具体来说maven的编译以及所有的脚本都有一个基础,就是POM(project object model)。这个模型定义了项目的方方面面,各式各样的脚本都在这个模型上工作,而ant需要自己定义,显然maven更胜一筹。

Maven对所依赖的包都有明确的定义,包名称,版本号,一目了然。而ant则通常是简单的include 所有的jar。导致的最终结果就是,你根本无法确定项目中的lib下的jar包是哪个版本的,唯一的方法就是打开 META-INF 目录下MANIFEST.MF。

Maven是基于中央仓库(或者私服)的编译,开发者只需要将编译所需要的资源放在一个中央仓库里。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码和pom配置文件,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,启动tomcat,配置编译的jdk版本等。而ant都需要自己去写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面试题