为什么要用摇篮,而不是Ant或Maven? [关闭] 为什么要用摇篮,而不是Ant或Maven?

2019-05-12 11:48发布

什么是针对Java的另一个构建工具真正得到我吗?

如果您使用过摇篮另一种工具,为什么呢?

Answer 1:

我不使用摇篮愤怒自己(只是到目前为止玩具项目)[作者表示他们已经使用摇篮上只有一个玩具项目到目前为止,没有那么摇篮是一个玩具项目-看评论],但我想说,原因之一会考虑使用它会因为Ant和Maven的挫折。

根据我的经验Ant是往往只写(是的,我知道这是可能写出精美模块化,优雅打造 S,但事实上很多人并不知道)。 对于任何不平凡的项目变得令人费解,并采取非常谨慎,以确保复杂的版本是真正的便携。 它的强制性质会导致配置复制之间架起(虽然宏能够帮助你在这里)。

Maven的采取了相反的做法,并希望你完全使用Maven的生命周期整合。 有经验的蚂蚁用户发现这个特别的不和谐随着Maven删除许多你在蚂蚁有自由的。 例如有一个Sonatype的博客 ,列举许多Maven的批评和他们的反应。

该Maven插件机制,可以非常强大的生成配置和继承模型意味着你可以定义一小封装的构建配置为一体的企业和个别项目可以继承这些配置父POM中的,使他们轻巧。 Maven的配置是非常详细的(虽然Maven的三个承诺来解决这个),如果你想要做什么,是“不Maven的方式”,你必须写一个插件或使用哈克Ant集成。 注意我碰巧喜欢写Maven插件,但认识到,很多人会反对所付出的努力。

摇篮承诺打Ant和Maven之间的最佳平衡点。 它采用常春藤的扶养解决办法。 它允许约定优于配置,而且还包括Ant任务作为头等公民。 它还明智地允许您使用现有的Maven /常春藤库。

所以,如果你已经打了,结果被卡住任何蚂蚁/ Maven的痛点,它可能是值得尝试的摇篮了,但在我看来,这还有待观察,如果你将不仅仅被用于交易未知的已知问题。 布丁的证明是在吃,但这样我会保留判断,直到该产品是多了几分成熟和其他人已经冰释前嫌是否有任何问题(他们称之为前沿的一个原因)。 我仍然会在我的玩具项目,可以用它虽然,这是一件好事,知道的选项。



Answer 2:

摇篮可以用于多种用途 - 这是一个更好的瑞士军刀比蚂蚁 - 但它是专门针对多项目构建。

首先,摇篮是一个依赖编程工具这也意味着它是一个编程工具。 随着摇篮,你可以在你的设置执行任何任务,随机和摇篮将确保所有申报依赖条件正确和及时的执行。 您的代码可以在多个目录中的任何一种布局(树平,散,...)的传播。

摇篮有两个不同的阶段:评估与执行。 基本上,在评估期间摇篮将寻找并评估它应该看的目录构建脚本。 在执行过程中会摇篮执行已在评估过程中考虑到的任务相互依赖性已加载任务。

在这些相关的编程上衣采用摇篮通过与Apache常春藤一体化项目增加和JAR依赖性的特点。 正如你所知道的Ivy比说Maven的一个更强大和更自以为是的依赖管理工具。

摇篮检测项目之间以及项目和JAR之间的依赖关系。 摇篮工程与Maven仓库(下载和上传)之类的ibiblio上一个或您自己的资料库,但也支持和其他类型的存储库基础设施的,你可能有。

在多项目建立摇篮既是适应性和适应构建的结构和架构。 您不必到您的结构或架构适应您的构建工具,将与Maven的需要。

摇篮尝试很难不会在你的方式得到的,努力的Maven几乎从不。 公约是好的却又如此的灵活性。 摇篮给你很多比Maven的更多功能,不但最重要的在许多情况下,摇篮将为您提供一个无痛的过渡路径从Maven的路程。



Answer 3:

这可能有点争议,但是摇篮不能掩盖一个事实,即它是一个完全成熟的编程语言。

ANT +蚂蚁contrib请在本质上是没有人真正想在编程图灵完整的编程语言。

Maven的尝试采取的努力是完全的声明,并迫使你编写和编译一个插件,如果你需要的逻辑相反的做法。 它还规定一个项目模型是完全不灵活。 摇篮结合了所有这些工具:

  • 它遵循约定优于配置(ALA Maven的),但只给你想要的程度
  • 它可以让你写灵活的自定义任务,如在蚂蚁
  • 它提供了多模块项目的支持,都优于Ant和Maven
  • 它有可能是DSL,使80%的东西容易和20%的东西(不像其他的构建工具,使80%的容易,10%的可能和10%实际上是不可能)。

摇篮是最可配置和灵活的构建工具,我还没有使用。 这需要一些投资了前面学习DSL和概念,如配置,但如果你需要一个没有废话,完全可配置的JVM构建工具,它是很难被击败。



Answer 4:

摇篮很好地结合了Ant和Maven,同时从两个框架是最好的。 从蚂蚁灵活性和约定优于配置,依赖管理和插件的Maven从。

所以,如果你想拥有一个标准的Java编译,就像行家,但测试任务必须做一些自定义步骤它可能看起来像下面。

的build.gradle:

apply plugin:'java'
task test{
  doFirst{
    ant.copy(toDir:'build/test-classes'){fileset dir:'src/test/extra-resources'}
  }
  doLast{
    ...
  }
}

更重要的是它采用常规的语法这使得更多的表现力则蚂蚁/ Maven的XML顶部。

这是蚂蚁的一个超集 - 您可以使用所有Ant任务的gradle中与漂亮,时髦的语法,即。

ant.copy(file:'a.txt', toDir:"xyz")

要么

ant.with{
  delete "x.txt"
  mkdir "abc"
  copy file:"a.txt", toDir: "abc"
}


Answer 5:

我们用摇篮和选择过来的Maven和Ant。 蚂蚁给了我们全面的灵活性和常春藤提供更好的依赖管理Maven的相比,但没有多项目构建的大力支持。 你最终做编码,支持多项目建立了很多。 也有一些构建按约定是好的,使构建脚本更加简洁。 与Maven,需要按约定建立太远,和自定义您的构建过程将成为黑客攻击。 此外,Maven的促进每一个项目发布的假象。 有时候你不得不分成子项目项目,但你希望所有的子项目的兴建和版本一起。 真的不是Maven是专为。

随着摇篮,你可以有蚂蚁的灵活性和通过的Maven的约定建立。 例如,它是琐细的与自己的任务延长了传统的构建生命周期。 你不会被强迫使用一个约定,如果你不想。 Groovy是更漂亮的代码比XML。 在摇篮中,可以定义本地文件系统上项目之间的依赖关系,而不需要发布的文物为每一个存储库。 最后,摇篮使用常春藤,因此具有优良的依赖管理。 对我来说,唯一真正的缺点迄今是缺乏成熟的Eclipse集成的,但Maven的选项是不是真的要好得多。



Answer 6:

这不是我的答案,但绝对与我共鸣。 这是从2012年10月ThoughtWorks的技术雷达 :

有两两件事引起的疲劳与基于XML的构建工具,如Ant和Maven:太多的愤怒尖括号和插件体系结构的粗糙。 虽然语法问题可以通过代进行处理,插件架构严重地限制了构建工具优雅地成长为项目变得更加复杂的能力。 我们来到这里,觉得插件是错误的抽象水平,并且更喜欢基于语言的工具,如摇篮和耙代替,因为它们提供了更细粒度的抽象和更大的灵活性,长期的。



Answer 7:

摇篮把乐趣回到建筑/组装软件。 我用蚂蚁来构建软件我的整个职业生涯中,我一直认为dev的工作是必要之恶的实际“buildit”的一部分。 几个月前,我们公司已经厌倦了没有使用二进制回购(又名检查罐子到VCS)和我得到的任务进行调查。 常春藤开始,因为它可以在蚂蚁的顶部用螺栓固定,没有太多的运气越来越像出版,我想我的建文物。 我去了Maven和远离黑客使用XML,对于一些简单的辅助工作库灿烂,但我遇到了严重的问题,试图捆绑应用程序准备部署。 滋扰相当长的一段谷歌搜索插件和阅读论坛和清盘下载支持罐子万亿为此我使用的日子不好过各种插件。 最后我去gradle这个(在这一点上已经相当苦,恼火,“这不应该这么硬!”)

但是从第一天一个我的心情开始好转。 我得到的地方。 我花了像两个小时迁移我的第一个蚂蚁模块和构建文件是基本上没有什么。 容易地安装一个屏幕。 大“哇”是:建立在XML 脚本 ,多么愚蠢是什么? 如果宣告一个依赖需要一行其实是很吸引我 - >你可以很容易地看到所有依赖于一个页面上的某些项目。 从那时起,我一直在恒定的侧倾中,我遇到的每一个问题,到目前为止有一个简单而优雅的解决方案。 我觉得这些都是原因:

  • Groovy是为Java开发人员非常直观
  • 文档是伟大的,真棒
  • 灵活性是无止境

现在我花时间设法想出新的功能添加到我们的构建过程。 如何生病是什么?



Answer 8:

它也更容易管理本地版本。 Ant和Maven是有效的Java只。 一些插件Maven的,尝试处理一些本地的项目存在,但他们没有做有效的工作。 Ant任务可以写成编译的本机项目,但它们太复杂和笨拙。

我们做的Java使用JNI和许多其他本地位。 摇篮大大简化了我们的蚂蚁乱。 当我们开始引进依赖管理本机项目是凌乱。 我们得到了Maven来做到这一点,但相当于摇篮代码为的是需要什么样的Maven一小部分,而且人们可以阅读和理解它没有成为Maven的大师。



Answer 9:

我跟埃德的Staub部分同意。 摇篮肯定是更强大的比Maven和提供更多的灵活性,长远。

进行评估,以从行家移动到摇篮后,我们决定坚持到Maven本身我们的gradle与遇到的(速度比行家慢,代理不工作)的两个问题。



文章来源: Why use Gradle instead of Ant or Maven? [closed]