Maven 还是 Ivy?在一个已经投入生产的系统中,哪一个更好?它们之间的区别是什么?

57

我知道这是一个复杂的问题,但我想知道在系统已经投入生产、存在大量缺陷和设计非常糟糕的情况下哪个更好。真的很乱。

实际上,我问这个问题是因为我已经在将这个项目转换成Maven,并且我面临了很多问题。 我需要调整文件夹结构,将公司制作的可怕框架与项目分离(它被转换成jar库),修复一些经常破坏项目的细节,配置POM.xml以使Ant已经在做的所有事情都能正常进行,并发现在应用程序中真正使用的库及其版本(其中很大一部分库没有版本号而且清单文件为空)。

嗯,这真的是一个地狱。在完成这项任务期间,我疯了,一直纠结的问题是:“如果我将其转换为Ivy会更容易吗?”。

我从未使用过Ivy,但我知道它与Ant配合工作,比Maven更容易适应项目。另一方面,Maven在全球范围内使用更广泛(我错了吗?)这应该有原因!

所以这就是我的问题:

  • Jenkins/Hudson集成:使用Ivy与Maven一样容易吗?
  • Sonar插件:与上述相同的问题。集成是否简单?
  • Eclipse插件:这是Maven非常薄弱的一点。插件很差,但我不知道Ivy插件。
  • 部署过程:一旦所有内容都配置好了,使用Maven部署和发布项目非常容易。Ivy呢?
  • 转换:我的转换项目到Maven的经验很糟糕,但系统没有帮助。我拥有的选择是,Maven对于新项目、自创建以来就一直使用Maven的项目非常出色,但如果您有一个大而无序的项目,则不是一个好选择。我错了吗?
  • 插件:需要在POM.xml中配置很多插件,这是相当多的。Ivy有那么多选项吗?
  • 流行度:哪一个更受欢迎?哪个被更广泛地使用,原因是什么?
  • 就是这样。


    你应该忽略流行度。Maven和Ivy都得到了很好的支持 :) - Jayan
    有太多的比较了。我希望它们可以给你一些想法,例如:https://dev59.com/XnRC5IYBdhLWcg3wXP0C http://java.dzone.com/articles/maven-vs-ivy-numbers http://docs.codehaus.org/display/MAVEN/Feature+Comparisons http://ant.apache.org/ivy/m2comparison.html http://www.google.com/trends/explore#q=apache%20maven,%20apache%20ivy - Charlee Chitsuk
    1
    在过去的一年左右时间里,我们一直在做同样的决定,并选择了Ant+Ivy。如果我们从头开始,Maven可能会是首选。你可能不需要为Ivy安装任何插件。缺点之一是,由于社区规模较小,因此很难获得有关Ivy的社区帮助。看看在StackOverflow上关于它的问题的答案(和非答案)的延迟,就知道我是什么意思了。 - Ed Staub
    @EdStaub 我同意你的看法!现在我能够清楚地看到。选择Ant/Ivy应该是最好的选择,但我选择了最糟糕的一个。现在我即将完成转换为Maven,所以就快完成了。要有耐心。关于社区,请看CharleeChitsuk发送的最后一个链接。它完全展示了你所说的内容。非常感谢。 - Pmt
    1个回答

    87
    首先,阅读来自Ivy网站的Ivy/Maven比较。关键信息如下:

    首先,最重要的区别是它们不是同一种类型的工具。Apache Maven是一个软件项目管理和理解工具,而Apache Ivy仅是一个依赖性管理工具,与流行的构建管理工具Apache Ant™高度集成。因此,更有趣的比较可能是Apache Ant+Ivy与Apache Maven的比较。但这超出了本页面所专注的仅限于依赖管理的范围。

    Ivy向Ant添加了依赖管理功能,因此,在使用哪个构建系统方面,问题实际上是:

    • 使用Ivy/Ant
    • 迁移到Maven

    如果您的构建已经在使用Ant,则转换到Ivy将更加容易,因为您的构建脚本不需要移植到另一个构建系统。

    如果您决定迁移到Maven,它将需要更多的工作量,因为您需要重写构建脚本并对所有内容进行Maven化以及配置您的依赖性管理。

    如果您决定朝着那个方向发展,从Ivy/Ant到Maven移植您的依赖性管理配置也将更容易。因此,Ivy依赖性管理将是一个良好的过渡阶段,以便在长期内转向Maven配置。


    你是我的救星 @prunge! - pratnala
    仅作为补充:Maven在项目上遵循固定的结构。Maven有一组基于依赖关系定义的固定范围。另一方面,Ivy不需要结构。Ivy允许用户使用任意代码布局和范围。 - satender
    上面评论中的链接已经失效,现在似乎链接到了广告。原始链接内容在这里:https://web.archive.org/web/20130909162842/http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/ - Luke Needham

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