Ant是否仍在Java构建的“主流”中?


14

我们一直在慢慢地用更全面的Ant构建(例如从CVS中获取,清理编译,jar,存档,电子邮件等)替换批处理命令文件(windows .bat),这些命令文件只是破坏了在开发人员IDE中编译的类。

我已经花了很多时间在Ant上学习(和调试问题),所以我最习惯将其用于这些任务。但是我不知道蚂蚁是否仍然像我刚开始学习时那样被广泛使用,还是“世界已经发展到”一种新的东西(也许更光滑了)。(例如,我开始看到分发了更多的Maven构建资料,例如,我从未使用过。)

这个问题的实际含义是,我是否要促使新开发人员学习Ant,还是应该为构建进行其他学习?

我从不总是掌握趋势,因此,很高兴听到其他Java开发人员的意见,他们认为这是最好的构建工具,以及他们认为新开发人员应该学习的知识。


阅读以下所有答案,它们都很棒!感谢您对Maven与Ant相比所提供的改进的见解。我将研究Maven。
山姆·戈德堡

很少有项目足够简单,以至于不需要大量的ant脚本。Maven以标准方式处理了许多此类事情。

Ant基本上是XML中的Shell脚本(并且使用Ant命令而不是Shell命令)。
user253751 '16

蚂蚁是不可思议的时间浪费。即使当Maven很糟糕时,这也是一个明智的选择。Ant无法集成到IDE中,而Java项目则是一大堆文件-您花费30%的时间只是在文件之间跳转。
布莱恩·亨特(Bryan hunt)

@bryanhunt:我们最终将Maven用于所有新项目。但是,我还没有找到Maven为Java应用程序创建部署包的好方法。(复制依赖项,上传jar很好。)我读过的大多数文章都回答了如何做到这一点,比如说要使用Ant插件。所以我发现我正在使用Ant修饰Maven的最终输出。在Ant中似乎比使用Maven Assembly插件更容易。
山姆·戈德堡

Answers:


23

我在这里与其他人一致认为,Maven似乎已经接管了我所研究的最重要的项目。

尽管Ant具有高度的灵活性,但是构建文件不是标准化的,因此当您移至新项目或公司时,目标的名称不同,文件的结构也不同,目标间的依赖关系可能会或可能不会建立,等等。

使用Maven,您还可以不必在SCM系统中携带二进制依赖项(我在说jar)。许多其他出色的Java工具都知道如何读取Maven POM文件(这是标准化的好处),因此IDE等工具可以非常快速地建立Maven项目,而Jenkins等构建工具可以轻松地执行Maven构建。


13
我还应该补充一点,使用Maven使我们的项目与IDE无关,如果您曾经在商店中遭受过IDE战争,您将不胜感激消除这场宗教斗争!
RonU

11

我一直在与Ant和Maven合作。根据我的经验,Maven有一个非常超过蚂蚁强大优势。

  • 我最近2到3年见过的所有项目似乎都在使用Maven。大约3年前,这使我感到奇怪,因为当时使用的Maven版本(2.0.something)似乎非常不可靠且有错误。尽管在某些时候(我不记得2.1或2.2),maven变得可靠了,花了一些时间后,我改变了主意。现在,我宁愿看到有人更喜欢蚂蚁而不是Maven感到惊讶。

关于Maven的负面评论,到目前为止,我对它的文档的了解还不是很好。我认为我看到的产品文档比Maven的文档差,但我不记得是哪个产品(某些古老的CSV库iirc)。


2
Dunno,我发现《Maven参考》相当不错。它不是完美的,确实有黑暗的未记录的角落,但是恕我直言,它明显好于平均水平。
彼得Török

@PéterTörök正确的Maven Reference也是我的急救。不知何故,尽管大多数令我烦恼的东西恰好都出现在这些黑暗的,没有记载的角落。确切地说,我发现这些角落比“未记录的”更“黑暗”-我的意思是我知道这里面有知识,但我无法破译。我不知道,也许我很不幸。也许是愚蠢的。或者,也许Maven的家伙只是缺乏,他们的团伙一个体面的高科技作家
蚊蚋

1
为什么,你见过哪一个开源项目,一个体面的高科技作家?;-)
彼得Török

@PéterTörök如此真实!:)流行的OSS项目的奢侈之处在于周围有很多“替代”文档编写者的专家。对我来说,这是与Maven的情况-总是有过一些大师身边的人,我可以问棘手的事情
蚊蚋

3

我们已经使用Maven几年了。它支持Ant脚本编写(就像Ant支持BeanShell一样),因此您的Ant知识可能仍然有用。Maven的功能要强大得多,但它还有一些其他基础架构要求(如果您在多个项目中共享组件,则需要Artifactory或Nexus服务器来托管您的构建)。它也与Ant完全不同,因此您无法利用很多现有知识。


1

我认为蚂蚁本身已经死在水中了。必须手动指定所有类路径依赖项(取决于您的设置)太手工了,很容易出错。如果将Ant与依赖项管理工具(例如Ivy)一起使用,则它可以保留其功能,并且无需手动管理依赖项。

与Maven相比,Ant的另一个问题是缺乏标准化,这在其他答案中已经提到。当从一个项目转到另一个项目或从一个工作转到另一个工作时,我发现最烦人的事情之一就是必须学习适用于不同Ant文件的新标准。Maven的约定优于配置,这意味着两个不同的项目将具有非常相似的结构,这使得它们之间的转换比使用Ant容易得多。

至于Ant是否仍然是主流,这将取决于您正在使用的开发环境。如果该项目是在小型公司或初创公司中,我想Maven是自然的选择,可以花时间投资于基础设施,例如人工工厂。但是,大型公司将在其Ant基础架构(配置,全局构建文件等)中投入很多年和大量资金,这意味着它们将不愿意放弃投入大量资金的技术。


0

Maven已经崛起了很多年,现在我需要学习它。事情总会发生变化,知道蚂蚁正在失去位置并不是一件坏事。

Maven可能只是很短的时间而已,但是如果它使我们的工作更轻松,那么值得花时间学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.