当前位置: 首页 > 面试题库 >

为什么使用Gradle代替Ant或Maven?

陈龙野
2023-03-14
问题内容

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

如果您在其他工具上使用Gradle,为什么?


问题答案:

我不会用Gradle来激怒自己(到目前为止只是一个玩具项目)
[作者表示,到目前为止,他们仅在一个玩具项目上使用了Gradle,而不是Gradle是一个玩具项目-请参阅评论]
,但我要说的是人们之所以考虑使用它的原因是因为Ant和Maven的挫败感。

以我的经验,Ant通常是只写的(是的,我知道可以编写漂亮的模块化,优雅的build,但事实是大多数人不会写)。对于任何不重要的项目,它都会变得弯曲,并会格外小心,以确保复杂的构建真正可移植。它的命令性性质可以导致在构建之间复制配置(尽管宏可以在此提供帮助)。

Maven采用相反的方法,并希望您与Maven生命周期完全集成。有经验的Ant用户会发现这特别令人讨厌,因为Maven消除了您在Ant中拥有的许多自由。例如,有一个Sonatype博客,列举了许多Maven批评及其回应。

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

Gradle承诺会在Ant和Maven之间达到最佳位置。它使用Ivy的方法来解决依赖项。它允许在配置上进行约定,但还包括作为头等公民的Ant任务。它还明智地允许您使用现有的Maven
/ Ivy存储库。

因此,如果您遇到了任何麻烦,并且陷入了Ant /Maven的任何痛点,则值得尝试Gradle,尽管在我看来,是否您不只是将已知问题换成未知问题,还有待观察。布丁的证据是在饮食中,所以我会保留判断,直到产品更成熟,其他人消除了任何扭结(由于某种原因,他们称其为流血边缘)。不过,我仍将在玩具项目中使用它,意识到这些选择总是很高兴的。



 类似资料:
  • 我怎样才能缩短这个,而不是用一打或的

  • 问题内容: 在PHP页面上的表单中,可以使用: 要么 要么 在表单的动作属性中。由于echo 不会传递要使用的变量,而您必须使用,为什么还要使用它呢? 我问是因为我花了一些时间才弄清楚这些变量没有随传递。谢谢。 问题答案: 该属性将默认为当前URL。这是“将表格提交到它来自的地方的最可靠,最简单的方法”。 没有理由使用,并且根本不提交表单(除非附加了事件处理程序来处理提交)。

  • Gradle是一个优秀的构建系统和构建工具,它允许通过插件创建自定义的构建逻辑。 我们基于Gradle以下的一些特点而选择了它: 采用了Domain Specific Language(DSL语言)来描述和控制构建逻辑。 构建文件基于Groovy,并且允许通过混合声明DSL元素和使用代码来控制DSL元素以控制自定义的构建逻辑。 支持Maven或者Ivy的依赖管理。 非常灵活。允许使用最好的实现,但

  • 问题内容: 该方法(可以接在执行)如下: 我想知道在这种情况下我们可以代替使用吗?喜欢 既然ArrayList类iteself已经是通用的,那么我们可以使用它代替新的通用类型吗? 问题答案: 的要点是,如果所需的数组是的基类。例如,如果为,但所需的数组为。如果被锁定到这是不可能的。 由于类型擦除,在通用集合/类型中不需要这种类型的东西。但是数组没有类型擦除,因此数组的类型非常重要。

  • 我的服务器无法连接到jcenter(亚马逊云)。我可以指定替代jcenter-server吗?

  • 问题内容: 我认为,如果我理解正确,在功能上与,在Python中是否完全相同,但是是否有理由在其他版本上使用?我知道Python新手常犯的一个错误是认为与or相同。 会发生类似的误解吗,还是功能上完全相同? 它在内存,处理器等方面的成本是否更高? 问题答案: 在Python 2中,它是一个确切的同义词-没有理由使用它,除了免费的异构性(样式问题)之外,也没有缺点。长期以来一直不鼓励使用它,现在已在