第2章 概述
目录
2.1、功能特性2.2、为什么选择Groovy?
2.1、功能特性Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
这里列出了一些Gradle的功能。声明式构建和逐个约定Gradle的核心是基于Groovy的丰富的可扩展的域特定语言(DSL)。Gradle通过提供可以根据需要进行组合的声明性语言元素将声明式构建推送到一个新的层次。这些元素还为Java,Groovy,OSGi,Web和Scala项目提供了逐个常规的支持。更重要的是,这种声明性语言是可扩展的。添加您自己的新语言元素或增强现有的元素,从而提供简洁,可维护和易于理解的构建。基于依赖的编程语言
声明性语言位于通用任务图的顶部,您可以在构建中充分利用它。它提供了极大的灵活性,使Gradle适应您的独特需求。结构化构建Gradle的柔韧性和丰富性终于允许您将常见的设计原则应用于您的构建。例如,通过可重用的构建逻辑构建构建是非常容易的。内联的东西,不必要的义务是不合适的。不要被迫撕开属于一起的东西(例如在你的项目层次结构中)。避免像霰弹枪变化或变化的气味,将您的建设变成维护噩梦。最后,您可以创建一个结构良好,易于维护,易于理解的构建。深层API
在构建执行的整个生命周期中,将乐趣嵌入到其许多钩子中,Gradle允许您将其配置和执行行为监视和定制到其核心。
可伸缩性Gradle可伸缩性很好。它大大提高了您的生产力,从简单的单一项目构建到巨大的企业多项目构建。这对于构建构建是正确的。凭借最先进的增量构建功能,对于解决许多大型企业构建所遭遇的性能难题也是如此。多项目构建
Gradle对多项目构建的支持非常出色。项目依赖是一流公民。我们允许您在多项目构建中为项目关系建模,因为它们真的适用于您的问题域。Gradle遵循您的布局,反之亦然。Gradle提供部分构建。如果您构建单个子项目,Gradle将负责构建子项目所依赖的所有子项目。您还可以选择重建依赖于特定子项目的子项目。与增量版本一起,这对于更大的版本来说是一个很大的节省时间。多种依赖管理方式
不同的团队喜欢不同的方式来管理他们的外部依赖。Gradle为任何策略提供方便的支持。从远程Maven和Ivy存储库的传递依赖管理到本地文件系统上的jar或目录。Gradle是第一个构建集成工具
蚂蚁任务是一流公民。更有趣的是,Ant项目也是一流的公民。Gradle为任何Ant项目提供了深入的导入,在运行时将Ant目标转换为本地Gradle任务。您可以依赖于Gradle,您可以从Gradle增强他们,甚至可以在build.xml中声明对Gradle任务的依赖。为属性,路径等提供相同的集成Gradle完全支持您现有的Maven或Ivy存储库基础架构,用于发布和检索依赖关系。Gradle还提供了一个转换器,用于将Maven pom.xml转换为Gradle脚本。Maven项目的运行时进口即将推出。易于迁移
Gradle可以适应您拥有的任何结构。因此,您可以随时在生产构建所在的分支中开发您的Gradle构建,并且可以并行演进。我们通常建议编写测试,确保生成的工件类似。这样一来,迁移就越少破坏性和可靠性越好。这是通过应用婴儿步骤遵循重构的最佳做法。Groovy
Gradle的构建脚本是用Groovy而不是XML编写的。但与其他方法不同,这并不是仅仅暴露动态语言的原始脚本功能。这只会导致很难维持建设。Gradle的整个设计面向被用作一种语言,而不是一个僵化的框架。而Groovy是我们的胶水,可以让您通过Gradle(或您)提供的抽象来讲述您的个人故事。Gradle提供了一些标准的故事,但他们没有任何形式的特权。与其他声明式构建系统相比,这对我们来说是一个主要的区别。我们的Groovy支持不仅仅是糖衣。整个Gradle API完全Groovyized。添加Groovy可以获得愉快和富有成效的体验。Gradle包装器
Gradle Wrapper允许您在没有安装Gradle的机器上执行Gradle构建。这对于一些连续的集成服务器是有用的。对于开源项目来说,它也是有用的,以防止构建它的障碍。包装对企业来说也是非常有趣的。对于客户端机器来说,这是零管理方法。它还强制使用特定的Gradle版本,从而最大限度地减少支持问题。自由开源
Gradle是一个开放源码的项目,并且是根据ASL授权的。2.2、为什么选择Groovy?我们认为,在构建脚本中使用内部DSL(基于动态语言)超过XML的优势是巨大的。那里有几种动态语言。为什么选择Groovy?答案在于Gradle正在运行的环境中。尽管Gradle是其核心的通用构建工具,但其主要重点是Java项目。在这样的项目中,团队成员将非常熟悉Java。我们认为,所有团队成员应尽可能透明。在这种情况下,您可能会争辩为什么我们不仅仅使用Java作为构建脚本的语言。我们认为这是一个有效的问题。它将为您的团队提供最高的透明度和最低的学习曲线,但由于Java的局限性,这样的构建语言将不会像现在那样好,表现力强大。[1]像Python,Groovy或Ruby这样的语言在这里做得更好。我们选择了Groovy,因为它为Java人提供了最大的透明度。它的基本语法与Java及其类型系统,其包结构等相同。Groovy提供了更多的优势,但具有Java的共同基础。对于具有Python或Ruby知识的Java开发人员,或者希望学习它们,上述参数不适用。Gradle设计非常适合在JRuby或Jython中创建另一个构建脚本引擎。目前我们并没有最高的优先级。我们很高兴地支持任何社区努力来创建其他构建脚本引擎。
在http://www.defmacro.org/ramblings/lisp.html中,您会发现一篇有趣的文章,比较了Ant,XML,Java和Lisp。很有趣的是,如果本文中的“如果Java具有该语法”语法实际上是Groovy语法。原文:https://docs.gradle.org/current/userguide/overview.html