Java构建工具:Ant vs. Maven

38

我正在阅读Kent R.Spillner关于Java构建工具的博客这篇文章。虽然我轻微地使用过Ant和Maven,但我没有认真地致力于其中任何一个,而现在我打算这样做。我链接的这篇博客是否夸大其词?最重要的是,对于一个中等规模的项目(大约20K行代码),我应该使用Maven还是Ant?


7
这篇文章过时了。使用Maven或Gradle。 - MariuszS
12
最好的构建工具是你自己编写的...不要听取这样的建议。构建足够复杂,每个开发人员都发明自己的定制构建方式只会让事情变得更加混乱。正因为如此,Maven/Gradle可能会胜过ANT,它们鼓励标准化构建。尝试支持4至5个以上的项目,你就会理解它的重要性。 - Mark O'Connor
2
很不幸的是,对于“Ant vs Maven”这个查询,这篇文章在谷歌上的排名非常高。在我看来,整篇文章都充斥着一种夸张的气氛,这种气氛只能源自于孤立工作的结果,一个人可以随意重新发明轮子,而无需向团队解释增加复杂性的理由。阅读时,脑海中浮现出“为哲学优化”的词汇。 - DeaconDesperado
1
Ant是一个很好的工具,但你需要有经验才能正确使用它,并且需要花费多年时间来掌握技巧。Maven标准化了一切,适用于中等规模的项目,但一旦涉及到任何自定义,就会遇到瓶颈。通常需要花费数天(字面意思)来尝试找出配置mvn插件的正确方法。此外,它的xml非常冗长,这使得可读性成为一个问题。Gradle非常棒。如果你是Java开发人员并且使用它甚至只有一点点时间,你很快就会看到它的优势。在我看来,Gradle完全可以取代Ant或Maven的需求。 - niken
1个回答

59

这要看情况而定。Maven和Ant只是不同的方法:命令式和声明式(详见命令式与声明式构建系统)。

Maven 更适用于管理依赖关系(但如果使用Ant+Ivy,Ant也可以胜任),以及构建工件。从Maven中获益最大的是它的生命周期。您只需在正确的阶段添加特定操作,这似乎非常合乎逻辑:例如,在integration-test阶段上启动集成测试。此外,还有许多现有的插件,几乎可以完成所有任务。Maven原型是一个强大的功能,允许您快速创建项目。

Ant 更适用于控制构建过程。在进行首次构建之前,您必须编写build.xml文件。如果您的构建过程非常特定,则必须创建复杂的脚本。对于长期项目,支持ant-scripts可能会变得非常痛苦:脚本变得太复杂,编写它们的人可能离开项目等等。

它们都使用XML,在大型长期项目中可能会变得太大。

无论如何,您都应该阅读有关两者的具体文档。此外,还有ant-maven-plugin,它允许使用Maven启动ant-scripts。

P.S. 您可以看看Gradle,我认为它可以提供比Maven更多的自由,但比Ant更容易使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接