我对Ivy,Maven和Archiva感到困惑 - 他们似乎都试图解决类似的问题。
我认为我认为Ivy会将类似Maven的功能改装为Ant(即Ant + Ivy~ = Maven)?但我不清楚Archiva为Ant + Ivy和/或Maven添加了什么(如果有的话)。我什么时候会使用(比如说)常春藤,什么时候才能使用Archiva?什么时候组合才有意义(如果有的话)?
背景:我们需要进行某种依赖管理并建立人工制品档案。我们的源代码是跨语言(混合了C ++,Java,Scala,Ruby和Python),我们的构建过程是跨平台的(Linux,Windows,OSX,Android,iOS,QNX)。我们有一个现有的基于scons的构建系统,它有点错综复杂。理想情况下,我们希望为此添加依赖关系管理和人工制品存档,而不是(比如说)将批发移动到Maven。
答案 0 :(得分:9)
最初Maven对Ant的一个重要优势是依赖管理的简易性,但你是对的,Ivy现在已经适应了这个差距,这意味着Ant + Ivy提供了一些与Maven类似的功能。构建和依赖管理。
现在两者都提供了依赖关系管理,其中一个最大的区别因素是Mavens使用“Convention over configuration”。有些人更喜欢Ant,因为它对于自定义任务/构建更灵活/更强大,因为有些人更喜欢maven,因为它更简洁,更简单。
这取决于你的构建的复杂性,如果你有基本的Java构建,那么Maven可能更适合作为pom文件(Maven build filds)非常简单,但是如果你需要做很多自定义的特定东西您最终可能会执行Ant脚本(同样,如果您已经有一个系统,那么交换不一定具有巨大的优势)。
Archiva与Ant + Ivy / Maven不同--Archiva是一个Web应用程序,它提供了一个UI来轻松管理存储库中的所有JAR文件。通常,对于构建团队来说,它们可以很好地控制和监视项目中使用的所有JAR。您可以将Archiva与Maven一起使用来管理您的中央maven存储库。另外值得注意的是,根据我的经验,Archiva有一些替代品,例如Nexus和Artifactory,这可能是更合适的(archiva不是我在回购管理中的首选) - 查看关于nexus之间差异的讨论/ artifactory Should we use Nexus or Artifactory for a Maven Repo?