原文地址 http://www.gradle.org/docs/current/userguide/writing_build_scripts.html
13.1. The Gradle build language构建语言
Gradle提供了一种“领域专用语言”(domain specific language) 或者 DSL对构建进行描述。这种语言基于Groovy,并加入了其他特性使得描述更简单。
在第七章Chapter 7, Java Quickstart 我们以apply()
方法为例做了描述。咦,这个方法哪来的?当时我们说脚本定义了工程,对于每一个工程Gradle会创建一个 Project
型的实例并将该对象实例和构建脚本进行关联。当构建脚本执行时会配置这个对象:
Getting help writing build scripts
嗨嗨别忘了构建脚本是Groovy代码,用的是Gradle API。而Project
接口就是你最先要了解的访问Gradle API的工具。所以要了解什么标签可用,就得去看Project
接口的文档.
-
脚本中调用的任何方法如果在基本中无定义,都委托给Project对象。
-
属性的访问同上。
咱们试着访问name属性看看
。
Example 13.1. Accessing property of the Project object
build.gradle
println name println project.name
Output of gradle -q check
> gradle -q check projectApi projectApi
哇唔,俩println
语句都打出了同一个属性。前者是自动委托了Project对象,对于没在脚本里定义的属性施行。后者使用了工程命来关联
Project对象。
如果你定义的属性和Project的成员一样了,那就必须使用工程名进行界定了。
Project对象提供了几个标准属性,下面列出了一些常用的:
Table 13.1. Project Properties
Name | Type | Default Value |
project |
Project |
The Project instance |
name |
String |
The name of the project directory. |
path |
String |
The absolute path of the project. |
description |
String |
A description for the project. |
projectDir |
File |
The directory containing the build script. |
buildDir |
File |
|
group |
Object |
unspecified |
version |
Object |
unspecified |
ant |
AntBuilder |
An AntBuilder instance |
脚本执行的时候Gradle会把它编译进实现了 Script
接口的一个类中,这样接口中的属性和方法都能直接使用了。
可是声明两种变量:局部变量和额外属性。
使用 def
关键字声明局部变量,它们只能在声明域中访问。局部变量在Groovy中就有。
Gradle域模型中的增强对象都有额外的用户定义属性。这包括但不限于工程、任务、资源集等。通过ext属性可以增加、读取、改变额外属性。也可以使用ext块增加多个额外属性。
Example 13.3. Using extra properties
build.gradle
apply plugin: "java" ext { springVersion = "3.1.0.RELEASE" emailNotification = "build@master.org" } sourceSets.all { ext.purpose = null } sourceSets { main { purpose = "production" } test { purpose = "test" } plugin { purpose = "production" } } task printProperties << { println springVersion println emailNotification sourceSets.matching { it.purpose == "production" }.each { println it.name } }
Output of gradle -q printProperties
> gradle -q printProperties 3.1.0.RELEASE build@master.org main plugin
上例中用 ext
块增加了两个额外属性。另外通过设置ext.purpose为null为每个资源集增加了purpose属性。一旦属性被增加就可以像预定义属性一样访问。
通过要求严格语法,Gradle会在尝试访问不存在是属性命时立即失败。额外属性可以从任何域访问,父工程的额外属性也能被子工程访问。
更多关于额外属性访问: ExtraPropertiesExtension
.
Groovy提供了大量特性来创建DSL,Gradle就利用了这一点。
Groovy给JVM类增加了大量好用的方法。比如 Iterable
有一个 each
方法,可以迭代访问元素:
Groovy会自动给属性增加 getter或 setter 方法.
方法的括号在调用时不需要写
Groovy提供了定义 List
和Map的快捷方法:
Example 13.7. List and map literals
build.gradle
// List literal test.includes = ['org/gradle/api/**', 'org/gradle/internal/**'] List<String> list = new ArrayList<String>() list.add('org/gradle/api/**') list.add('org/gradle/internal/**') test.includes = list // Map literal apply plugin: 'java' Map<String, String> map = new HashMap<String, String>() map.put('plugin', 'java') apply(map)
Gradle DSL随处使用闭包,闭包的概念见here。如果方法的最后一个参数是闭包,则可以把闭包后置 :
相关推荐
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。 官网下载很慢的,...
Gradle构建系统的插件,可以轻松编写更改日志 安装 适用于所有Gradle版本的构建脚本代码段: buildscript { repositories { jcenter() } dependencies { classpath "org.gradliss.changelog:changelog-gradle...
它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序,还支持多种语言和技术,例如C++、Python、Android等。 更多信息和详细文档可以在[Gradle...
霸屏天下源码java Gradle Gradle 기초 什么是Gradle? Gradle 是一个开源构建自动化工具,专注于灵活性和性能。 Gradle 构建脚本是使用 ...编写的。...高度可定制——Gradle ...快速——Gradle ...您的构建脚本配置此
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。 gradle-4.4-all....
Gradle构建系统:理解并掌握Gradle构建脚本的编写,包括dependencies管理、productFlavors、buildTypes等概念。 Activity与Fragment:深入理解Activity与Fragment的生命周期,合理组织应用的页面结构。 ...
Gradle是以Groovy语言为基础,面向Java应用为主。...本文面向gradle新手或者以前使用过gradle低版本的朋友,因为我感觉每次gradle升级那个脚本也有些坑爹,有些api就废弃掉了,不过总体感觉每次升级都让这个工具
使构建脚本比 Ant 或 Maven xml 更易于阅读 可维护 安装 $ brew cask install java $ brew install gradle Gradle 构建 构建文件通常命名为build.gradle 构建文件包含任务,和 插件 依赖 你好Gradle 另存为build....
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写,Gradle免费版是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。版本为gradle-7.4。
Gradle 是一个JVM平台上的自动化的构建工具,支持多项目构建,强有力依赖管理(本地或者远程依赖),构建脚本使用Groovy语言编写。 在Android Studio的 project 视图下的 gradle/ wrapper/gradle-wrapper.properties ...
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
使构建脚本比 Ant 或 Maven xml 更易于阅读 可维护 安装 $ brew cask install java $ brew install gradle Gradle 构建 构建文件通常命名为build.gradle 构建文件包含任务,和 插件 依赖 你好Gradle 另存为build....
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。 sha256:fa4873ae...
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,...
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。文档详细说明的...
优点之一是,构建脚本本身也是脚本。 这意味着可以在构建脚本中完成中的所有操作。 这对于抽象化构建中的常见模式(例如重复或有条件的决策)很有用。 最重要的是, 提供了一个方便的构建系统,该构建系统以不同的...
金星脚本 欢迎使用动态可注入脚本语言VenusScript的官方GitHub存储库。 请参阅,以进一步了解该语言的工作方式。 版本计划 版 州 描述 0.x 完成 定义 功能 功能参考 标准库 循环容器 分支组件 变量引用 初始动态...