有人可以告诉我Ant和Maven之间的区别吗?我也没用过。我知道他们习惯于自动构建Java项目,但我不知道从哪里开始。
答案 0 :(得分:216)
答案 1 :(得分:112)
答案 2 :(得分:20)
答案 3 :(得分:17)
Maven or Ant?与此问题非常类似,可以帮助您回答问题。
What is Maven?在官方网站上。
编辑:对于新的/绿地项目,我建议使用Maven:“约定优于配置”将为您节省大量的时间来编写和设置构建和部署脚本。当您使用ant时,构建脚本的长度和复杂性会随着时间的推移而增长。对于现有项目,可能很难将其配置/布局塞进Maven系统。
答案 4 :(得分:16)
仅列出更多差异:
<强>更新强>
这来自Maven: The Definitive Guide。对不起,我完全忘了引用它。
答案 5 :(得分:14)
Maven既是一个依赖管理工具 - 它可以用来从中央存储库或你设置的存储库中检索jar,也可以用作声明性构建工具。 “声明式”构建工具与更传统的构建工具(如ant或make)之间的区别在于您配置需要完成的工作,而不是如何完成。例如,您可以在maven脚本中说项目应该打包为WAR文件,maven知道如何处理它。
Maven依赖于有关如何布置项目目录以实现其“声明性”的约定。例如,它有一个约定,用于放置主代码的位置,放置web.xml的位置,单元测试等等,但如果需要,还可以更改它们。
您还应该记住,有一个插件可以在maven中运行ant命令:
http://maven.apache.org/plugins/maven-ant-plugin/
此外,maven的原型使得项目开始非常快。例如,有一个Wicket原型,它提供了一个maven命令,您可以运行该命令来获得一个完整的,可立即运行的hello world类型项目。
答案 6 :(得分:10)
我可以带一个从未见过Ant的人 - 它的build.xml
写得相当合理 - 他们可以理解发生了什么。我可以接受同一个人并向他们展示一个Maven POM,他们不会知道发生了什么。
在一个庞大的工程组织中,人们写到Ant文件变得庞大且难以管理。我写了那些类型的和干净的Ant脚本。它真正了解您需要做的事情,并设计一组模板,以响应变化并在3年以上的时间内扩展。
除非你有一个简单的项目,否则学习Maven约定和Maven关于完成任务的方法是相当多的工作。
在一天结束时,您不能将Ant或Maven的项目启动视为一个因素:它实际上是总拥有成本。组织在几年内维护和扩展其构建系统所需的是必须考虑的主要因素之一。
构建系统最重要的方面是依赖关系管理和表达构建方法的灵活性。如果做得好,它必须有点直观。
答案 7 :(得分:6)
我会说这取决于你的项目的大小......个人而言,我会将Maven用于需要直接编译,打包和部署的简单项目。一旦你需要做一些更复杂的事情(许多依赖项,创建映射文件......),我会切换到Ant ......
答案 8 :(得分:4)
Maven还拥有一个常用的开源项目的大型存储库。在构建期间,Maven可以为您下载这些依赖项(以及依赖项依赖项:)),使构建项目的这一部分更易于管理。