Ivy、Maven和Archiva之间的相似之处、不同之处和权衡是什么?

4
我对Ivy、Maven和Archiva感到困惑——它们似乎都在尝试解决类似的问题。
我认为我是正确的,认为Ivy将类似于Maven的功能应用于Ant(即Ant + Ivy ~= Maven)?但我不清楚Archiva是否添加了任何东西到Ant + Ivy和/或Maven中。在什么情况下会使用Ivy,什么情况下会使用Archiva,如果有的话,何时组合使用会有意义?
背景:我们需要实现某种依赖管理和构建工件存档。我们的源代码是跨语言的(混合了C++、Java、Scala、Ruby和Python),我们的构建过程跨平台(Linux、Windows、OSX、Android、iOS、QNX)。我们有一个现有的基于scons的构建系统,有些复杂。理想情况下,我们希望将依赖管理和工件存档添加到其中,而不是(比如)全部转移到Maven。

我强烈建议非 Java 项目避免使用 Maven 作为构建工具。对于构件库,请参考我的问题/答案:https://dev59.com/tGw05IYBdhLWcg3wqzis。 - gavenkoa
1个回答

9
最初,Maven相对于Ant的一个巨大优势就是依赖管理更加容易。但你说得对,现在Ivy填补了这个空缺,这意味着Ant+Ivy在构建和依赖管理方面提供了与Maven类似的功能。现在两者都提供依赖管理,其中一个重要的区别因素是Maven使用“约定优于配置”。有些人喜欢Ant,因为它更加灵活/强大,可以进行自定义任务/构建,而有些人则喜欢Maven,因为它更加简洁和简单。这将取决于您构建的复杂性。如果您只是基本的Java构建,则Maven可能更适合,因为pom文件(Maven构建文件)非常简单。但是,如果您需要执行许多自定义特定操作,则最终可能会使用Ant脚本来执行(此外,如果您已经有一个系统在运行,则没有必要交换)。Archiva与Ant+Ivy/Maven不同——Archiva是一个Web应用程序,提供UI以轻松管理存储库中的所有JAR文件。通常,它们可以很好地为您的构建团队控制和监视项目中使用的所有JAR文件。您将与Maven一起使用Archiva来管理您的中央Maven存储库。
值得注意的是,根据我的经验,有一些与Archiva类似的替代品,例如Nexus和Artifactory,可能更适合(archiva不会是我在仓库管理方面的首选)-请查看这篇关于nexus/artifactory差异的讨论我们应该使用Nexus还是Artifactory作为Maven Repo?

谢谢。那么Archiva相比“原始”的Ivy或Maven存储库有什么额外的功能? - Paul Butcher
1
Archiva是一个纯粹的Web应用程序,用于管理您的仓库。您的仓库只是文件系统上的所有JAR包,因此您需要使用putty/windows explorer来查看/删除/等等仓库中的JAR包。通过Archiva,您需要将该应用程序托管在像Tomcat这样的服务器上,然后您可以通过一个漂亮的Web界面来查看和管理您的库。 - rhinds
太好了 - 谢谢!这让事情变得更加清晰(并且给我探索其他途径的机会)。 - Paul Butcher

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