Maven还是常春藤?对于已经投入生产的系统,哪一个更好?还有其他的区别? [关闭]

Posted

技术标签:

【中文标题】Maven还是常春藤?对于已经投入生产的系统,哪一个更好?还有其他的区别? [关闭]【英文标题】:Maven or Ivy? Which one is better with a system already in production? And the other differences? [closed] 【发布时间】:2013-03-11 18:39:10 【问题描述】:

我知道这是一个复杂的问题,但我想知道在系统已经投入生产的情况下,哪个更好,有很多错误,而且设计非常糟糕。真是一团糟。

实际上,我之所以问这个问题是因为我已经将这个项目转换为 Maven,而且我面临着很多问题。 我需要调整文件夹结构,将公司制作的糟糕框架从项目中分离出来(它被转换为 jar 库),修复了很多一直破坏项目的细节,配置 POM.xml 以完成所有工作Ant 已经在做并发现应用程序中真正使用的库作为它们的版本(很大一部分库被重命名,没有版本号,并且清单文件是空的)。

嗯,真的是地狱。在这个任务中我发疯了,一直跟着我的问题是“如果我把它转换成 Ivy?会更容易吗?”。

我从未与 Ivy 合作过,但据我所知,它与 Ant 合作,而且它比 Maven 更容易适应项目。另一方面,Maven 在整个词中使用得更多(我错了吗?),这应该是有原因的!

所以这是我的问题:

与 Jenkins / Hudson 集成:使用 Ivy 就像使用 Maven 一样简单? 声纳插件:上面的问题相同。集成起来简单吗? Eclipse 插件:这是 Maven 的一个非常薄弱的​​地方。插件很糟糕,但我不知道 Ivy 的。 部署过程:一旦一切就绪,使用 maven 部署和发布项目就非常简单。和 Ivy 一起? 转换:嗯,我将项目转换为 Maven 的经验很糟糕,但系统没有帮助。我的选择是 Maven 它对于新项目来说是惊人的,自 Maven 创建以来就与它一起工作的项目,但如果你有一个大而无组织的项目,这不是一个好的选择。我错了吗? 插件:要在 POM.xml 中配置很多插件。常春藤有这么多选择吗? 人气:哪个更受欢迎?哪个更常用,为什么?

嗯,就是这个。 非常感谢!

【问题讨论】:

你应该忽略受欢迎程度。 maven 和 ivy 都得到了很好的支持:) 比较太多了。我希望他们能给你一个想法。例如***.com/questions/318804/…java.dzone.com/articles/maven-vs-ivy-numbersdocs.codehaus.org/display/MAVEN/Feature+Comparisonsant.apache.org/ivy/m2comparison.htmlgoogle.com/trends/explore#q=apache%20maven,%20apache%20ivy 在过去一年左右的时间里,我们一直在做同样的决定,最终选择了 Ant+Ivy。如果我们从头开始,Maven 可能是选择。您可能不需要任何常春藤插件。一个缺点:对于 Ivy 来说,获得社区帮助解决问题要困难得多,因为社区要小得多。在 *** 上查看有关它的问题的答案(和非答案)的延迟,以了解我的意思。 @CharleeChitsuk 真的很好!非常感谢! @EdStaub 我同意你的看法!现在我可以看得很清楚了。选择 Ant/Ivy 应该是最好的选择,但我选择了最差的。现在我即将完成到 Maven 的转换,所以它完成了。冷静。关于社区,请查看 CharleeChitsuk 发送的最后一个链接。它准确地显示了你在说什么。非常感谢。 【参考方案1】:

首先,阅读 Ivy 网站上的Ivy / Maven comparison。关键信息:

首先,最重要的区别是它们根本不是同一种工具。 Apache Maven 是一个软件项目管理和理解工具,而 Apache Ivy 只是一个依赖管理工具,与流行的构建管理工具 Apache Ant™ 高度集成。因此,也许更有趣的比较是将 Apache Ant+Ivy 与 Apache Maven 进行比较。但这超出了本页面的范围,该页面仅关注依赖管理。

Ivy 为 Ant 添加了依赖管理功能,所以实际上,关于您使用什么构建系统的问题是:

使用 Ivy/Ant 迁移到 Maven

如果您的构建已经使用 Ant,Ivy 将是一个更容易的过渡,因为您的构建脚本不需要移植到不同的构建系统。

如果您决定过渡到 Maven,则需要付出更多努力,因为您需要重写构建脚本和 Mavenize 一切,以及配置您的依赖管理。

如果您决定朝那个方向发展,那么将您的依赖管理配置从 Ivy/Ant 移植到 Maven 也会更容易。因此,从长远来看,Ivy 依赖管理将是一个很好的 Maven 配置踏脚石。

【讨论】:

非常感谢您的解释! @PimentaDev。 This link provides a very good and fair comparison over both. 你是我的救星@prunge! 只是补充一下:Maven遵循项目的固定结构。 Maven 有一组固定的范围,基于定义的依赖项。另一方面,Ivy 不需要结构。 Ivy 允许用户使用任意代码布局和范围。

以上是关于Maven还是常春藤?对于已经投入生产的系统,哪一个更好?还有其他的区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 maven 存储库作为本地常春藤缓存

解决常春藤中的maven test-jar

使用外部常春藤进行 sbt 构建

常春藤:我如何删除传递依赖?

常春藤不使用分类器拉动对 jar 的传递依赖

如何解决具有不同包装常春藤类型的sbt中的依赖关系?