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。

4

1 回答 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。您将使用 Archiva 和 Maven 来管理您的中央 maven 存储库。

另外值得注意的是,根据我的经验,Archiva 有一些替代品,例如 Nexus 和 Artifactory,这可能更合适(archiva 不会是我在回购管理中的首选) - 查看关于 nexus/artifactory 之间差异的讨论应该我们使用 Nexus 或 Artifactory 进行 Maven 回购?

于 2011-05-20T13:55:12.783 回答