什么是Ivy?它与Ant有什么关系?

28

我在我的应用程序构建项目中看到了许多Ivy文件。Ivy是什么,它与Ant有什么关系?


1
http://ant.apache.org/ivy/features.html - Bozho
4个回答

25

Ivy是Ant的扩展,用于在开发过程中管理外部库,使你可以将它们添加到类路径中,将它们捆绑到应用程序构建中等。

虽然与Maven有一些重叠,但Ivy更加轻量级(且功能不如Maven多)。


Ivy与Maven Ant Tasks(http://maven.apache.org/ant-tasks/index.html)竞争,但绝对不会与Maven竞争。 - Pascal Thivent
4
公平地说,我没有说它与之竞争,我说它与之有重叠。 - skaffman
嗯,因为Ivy是Maven依赖处理机制的Ant端口,所以它们当然有一定的“重叠”。但是,你不能将它们进行比较。 - Pascal Thivent

9

Ivy是一个依赖管理器,它管理和控制项目所依赖的JAR文件。如果您没有这些JAR文件,它会默认从Maven 2存储库中下载它们,这可以使项目设置变得更加容易。


除了大多数远程Ivy/Maven仓库非常零散和不完整。 - skaffman
@Pascal - 我的经验与 @skaffman 的说法一致。例如,当我开始使用Maven时,我很难找到J2EE api JARs的“正确”版本,而且我放弃了寻找OAIcat。我也遇到过需要“排除”解决方法的坏依赖问题。但是,对我来说,Maven风格的依赖关系的好处胜过这些问题。 - Stephen C
1
@Stephen 那是什么时候?Java/J2EE jars的问题更多是许可证问题,而不是其他任何问题,并且已经在Java.net存储库中解决了很长时间。关于错误的元数据,有任何最近的不良经历吗?无论如何,任何严肃的企业项目都应该使用企业存储库,而不是依赖公共资源。所以,我不同意。 - Pascal Thivent

8

Ivy最初是Jayasoft.fr产品,当时它的许可证是BSD,但Ivy的核心一直保持不变:它是一个依赖管理工具。

Ivy与Ant的关系在于它是Ant扩展,因为通过Ant使用它,但它并不真正依赖于Ant(除了显而易见的部分)。Ivy通过孵化过程于2007年10月11日合并到Ant作为子项目的Apache项目中。

人们普遍存在的误解是将Ivy与Maven整个系统进行比较。然而,这并不适用,因为Ivy仅以敏捷的方式处理依赖项,并且通过简单的配置和广泛的自动化支持各种构建系统等方面非常擅长,而Maven则是一个构建系统本身。个人意见可能会有所不同,这值得进行几次Stackoverflow / Google搜索来了解更多信息。


5
我认为以下是需要补充的重要和有用的内容:
  • Ivy可以在没有Ant的情况下从命令行独立使用。如果您的CI环境不包括Ant,则不会妨碍您使用Ivy。是的,与Ant的集成很好,而且文档也更加详细。不过,您可以将Ant集成文档应用于独立使用。
  • Ivy不仅适用于Java。我的团队成功地将其用于定义相当大的.NET项目的依赖关系(10个相互依赖的软件包,在生产中有多个版本,并具有多个第三方上游依赖项)。效果非常好。我希望文档能够更清晰完整。
  • Ivy还提供了额外的构建时间特权:上游和下游构建触发。

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