为什么使用 Gradle 而不是 Ant 或 Maven? [关闭]

2024-03-27

另一种针对 Java 的构建工具到底能给我带来什么?

如果您使用 Gradle 而不是其他工具,为什么?


我不使用Gradle http://www.gradle.org/我自己很生气(到目前为止只是一个玩具项目)[作者的意思是,到目前为止,他们仅在一个玩具项目上使用 Gradle,而不是说 Gradle 是一个玩具项目 - 请参阅评论],但我想说,人们考虑使用它的原因是 Ant 和 Maven 的挫败感。

根据我的经验,Ant 通常是只写的(是的,我知道可以写精美的模块化、优雅的构造 http://onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.Htmls,但事实是大多数人不这样做)。对于任何重要的项目来说,它都会变得令人费解,并且需要非常小心地确保复杂的构建真正可移植。它的命令性质可能导致构建之间的配置复制(尽管宏在这里可以提供帮助)。

Maven 采用相反的方法,并期望您与 Maven 生命周期完全集成。经验丰富的 Ant 用户会发现这特别令人不快,因为 Maven 消除了 Ant 中的许多自由。例如有一个Sonatype博客 http://www.sonatype.com/people/2009/05/were-used-to-the-axe-grinding/其中列举了许多 Maven 的批评及其回应。

Maven 插件机制允许非常强大的构建配置,而继承模型意味着您可以定义一小组封装整个企业的构建配置的父 POM,并且各个项目可以继承这些配置,从而使它们变得轻量级。 Maven 配置非常冗长(尽管 Maven 3 承诺解决这个问题),如果您想做任何“不是 Maven 方式”的事情,您必须编写一个插件或使用 hacky Ant 集成。注意,我碰巧喜欢编写 Maven 插件,但很高兴许多人会反对所涉及的工作。

Gradle 有望达到 Ant 和 Maven 之间的最佳平衡点。它用Ivy http://en.wikipedia.org/wiki/Apache_Ivy的依赖解析方法。它允许约定优于配置,但也将 Ant 任务作为一等公民。它还明智地允许您使用现有的 Maven/Ivy 存储库。

因此,如果您遇到并陷入了 Ant/Maven 的任何痛点,那么可能值得尝试 Gradle,尽管在我看来,您是否只是将已知问题换成未知问题还有待观察。布丁的证明在于吃,所以我会保留判断,直到产品更成熟一点并且其他人已经解决了任何问题(他们称其为前沿是有原因的)。不过,我仍然会在我的玩具项目中使用它,了解这些选项总是好的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 Gradle 而不是 Ant 或 Maven? [关闭] 的相关文章

随机推荐

  • 删除旧的 .PhpStorm 目录是否安全

    每次我将 PhpStorm 升级到新的单点版本时 我的主目录中都会保留以前的版本 我现在有 PhpStorm2017 1 PhpStorm2017 2 PhpStorm2017 3 PhpStorm2018 1 PhpStorm2018 2
  • 如何在 Android Studio 中编辑 .jar 文件

    如何使用 Android Studio 编辑 jar 文件中的 class 文件中的代码 当然 我已经尝试过编辑它 由于某种原因 我试图编辑的类是只读的 Jar文件是压缩档案 zipped files class文件 以及一些其他资源 cl
  • 学习 C# Excel 互操作的资源 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有哪些资源可以帮助我快速启动并运行 C 中的 Excel 互操作 文章从 Visual Studio 2005 开发人员的角度理解 Exc
  • 使用 scipy 中的 optimization.minimize 和 2 个变量和插值函数

    我没有找到使用多维函数从 scipy 执行 optimize minimize 的方法 在几乎所有示例中 解析函数都得到优化 而我的函数则被插值 测试数据集如下所示 x np array 2000 2500 3000 3500 y np a
  • Spark fat jar 在 YARN 上运行多个版本

    我有一个旧版本的 Spark 设置和 YARN 我不想删除它 但仍然想使用较新的版本 我找到了一个couple https community cloudera com t5 Advanced Analytics Apache Spark
  • 窗口对象中奇怪的 self 对象

    我不明白为什么window在下面self and self在下面window目的 如果你去开发工具或 Firebug 并写window你得到了DOM window反对self位于该对象下 奇怪的部分是window在下面self again
  • 在Vue js中显示错误消息

    我有一个以下组件 其中有一个更新员工的方法 我想在 ajax 调用的 错误 回调中分配 更改 erroMessage 变量后立即在视图中显示错误消息 var EmployeeEdit Vue extend template employee
  • 如何在android中创建选项菜单?

    我想使用 c 和 Xamarin Studio 在 Android 应用程序中创建一个简单的选项菜单 我该怎么做 我还没有找到任何这方面的 C 示例 有人可以简单解释一下如何创建选项菜单吗 定义菜单 创建菜单的一种方法是使用放置在 Xama
  • Maven编译器使用的JDK版本在哪里指定?

    当我没有在我的 pom xml 文件中定义如下内容时 在我的系统上的哪个位置为 Maven 定义了编译时使用哪个版本的 Java JDK 我的系统上安装了多个版本 JAVA HOME指向其中之一
  • 使用 SQL Server 2012 恢复多个数据库的最佳脚本?

    我必须恢复大约 60 个不同大小的 SQL 数据库 我在谷歌上搜索找到一个脚本来依次恢复所有数据库 只需从我的文件夹中一一挑选它 我没有那么成功 可能是因为我对 SQL 等还很陌生 它可以在 powershell 或 sql 命令行中完成
  • 无法使用处理程序解决 CalledFromWrongThreadException

    我会尽量保持简单 在我的主要活动中 我创建了一个处理程序 public class ARViewer extends ARDisplayActivity public final MHandler mHandler new MHandler
  • Linux 发行版二进制兼容性

    有没有办法在 Linux 发行版中制作二进制文件并在具有相同架构的另一个发行版上运行它 或者我应该在不同的发行版上编译和构建它 基于 Redhat Debian 的二进制文件发行版之间是否存在兼容性 我想在 fedora 上使用我的 Ubu
  • 尝试打开工作簿时的 VBA 错误处理

    我试图循环浏览文件夹中的所有文件 打开它们并删除文档信息 我在处理无法打开的文件或打开时出现有关禁用宏的弹出消息时遇到问题 我尝试使用错误恢复下一步和错误转到 0 来解决此问题 但随后我遇到运行时失败 因为当我尝试关闭已打开的文件时 我的工
  • 管理多个 AWS 账户凭证的推荐方法?

    通过以下方式管理多个 Amazon Web Services AWS 账户的最佳方式是什么boto 我熟悉博托配置 http docs pythonboto org en latest boto config tut html文件 我正在使
  • Eclipse 使用 jboss 进行远程调试

    如何在 JBOSS 服务器 4 x 版本的 Eclipse 中配置远程调试 So far Step1 我修改了run config文件 通过取消注释以下行 用于远程套接字调试的示例 JPDA 设置 JAVA OPTS JAVA OPTS X
  • 系统更新IMG的src。内存泄漏

    系统更新IMG的src 内存泄漏 我目前每 x 秒更新一张图像 我想到的几种方法如下 拿一个 var url ImageID attr src url 现在这个作品完美地改变了形象but导致内存泄漏 取二 所以它正在创建 DOM 元素 所以
  • 相当于 JMockIt 中的 times() 吗?

    我不认为 minInspiration 或 maxInspiration 等同于 Mockito 中的 times 有没有 请看这个问题 Mockito 和 JMockIt 之间的主要区别 https stackoverflow com q
  • 如何在 Artifactory 中触发 Jenkins 在新工件上构建?

    Artifactory 可以用作 Jenkins 中的 SCM 或源来触发特定工件部署上的构建吗 在 Artifactory Jenkins 插件中没有看到 或错过 任何类似的内容描述 https www jfrog com conflue
  • 选择 count(*) 并“连接”3 个表

    我正在寻找 3 个表的联接内的计数查询 它可以让我对其中一个表的不同值进行计数 我有 3 个表 需要连接它们才能获取预期数据 Workflow Message and Message Workflow Relation 我想获取按状态 已连
  • 为什么使用 Gradle 而不是 Ant 或 Maven? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi