另一种针对 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(使用前将#替换为@)