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都需要自己去写。
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-Ant与Maven的区别和联系
- Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
- Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
- java面试题之JDK和JRE的区别是什么?
- 【Java面试题】39 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
- 【Java面试题】3 Java的"=="和equals方法究竟有什么区别?简单解释,很清楚
- 服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
- java-Ant与Maven的区别和联系
- Java面试题:int和Integer有什么区别
- 【javaWeb之前端】前端面试题-----js和jquery的区别是什么?
- 【Java面试题】9 abstract class和interface有什么区别?
- 服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
- Java工程构建工具ANT与Maven的区别
- 面试题:java内存中的堆区和数据结构中的堆有什么区别
- 【Java面试题】47 heap和stack有什么区别
- 【Java面试题】24 sleep() 和 wait() 有什么区别? 详细解析!!!!
- [面试题]java中final finally finalized 的区别是什么?
- "=="和equals方法究竟有什么区别? —— Java经典面试题系列
- JAVA面试题解惑系列(四)——final、finally和finalize的区别
- Java面试系列【final、finally、finalize区别】-finalize是什么,基础篇