注:这些不能用来设置命令行jvm选项。 html
每一个gradle构建都由一个或多个项目组成。一个项目表明什么取决于你经过gradle怎么作。例如:一个项目可能表明一个jar lib库或者一个web应用程序;它也可能表明一个从其余项目jars提取出的zip分布;一个项目并必定表明一个构建;它可能表明一件事情要作;好比,部署你的应用程序到工做台或者生产环境中;若是这看起来有点模糊,不要担忧,Gradle build-by-convention支持为一个项目添加更具体的定义。 java
每一个项目都有一个或多个tasks任务组成。一个任务表明一个一些构建工做的原子块。这多是编译一些类,建立一个JAR,生成javadoc, 或发布存档到仓库。 web
如今,咱们将看看定义一些简单的任务在一个构建一个项目。 后面的章节将看 处理多个项目和更多关于工做项目和任务。 shell
使用gradle命令运行gradle构建。这个命令会在当前目录查找build.gradle文件,咱们一般把这个文件叫作构建脚本。虽然严格来讲它是一个构建配置脚本,正如咱们稍后所看到的那样,这个脚本定义一个项目及其文档。 api
让咱们来尝试建立一个构建脚本:build.gradle 闭包
在一个命令行shell,移动到build.gradle所在目录并执行构建脚本:gradle -q hello jvm
一个构建脚本的执行: ide
有一个速记方法来定义一个任务,例如上面的hello,这个速记方法看起来更简洁: 学习
上面定义一个名叫 hello的任务闭包执行脚本。咱们将在整个用户指南中使用这种任务定义风格。 gradle
Gradle构建脚本给了你groovy的所有威力。做为开胃菜,先看看这个:
或者
以下
如你所想,你能够声明依赖于其余任务的任务
插入:命令行建立文件 echo.>build.gradle
问题:怎么在命令行输出中文
添加一个依赖项,这个依赖不是必须存在的(不是必须定义在依赖前*)
任务taskx对tasky的依赖声明在tasky的定义以前,这对多项目构建很是重要。任务依赖关系在15.4添加任务依赖项中会有更详细的探讨。
注意:你不能使用快捷键符号指向未定义的任务。
Groovy不但能定义一个任务作什么,例如,它还能动态建立任务。
一旦任务建立,他们就能够经过api进行访问。例如,用这个特性你能够在运行时为一个任务动态的添加依赖关系。Ant并不支持这一点。
或者,你也能够添加行为到现有任务中
注:task任务名不区分大小写(执行的时候)。
DoLast和doFirst能够屡次被调用执行,他们在任务动做列表的开始或结束添加一个动做,他们在动做action列表中顺序执行。<<操做符是doLast的一个别名。
正如你所注意的,在例子中有一个很方便的符号来访问已存在的任务。每个任务均可以看做是构建脚本的一个属性。
这使代码很是有可读性,特别是使用插件提供的任务时,好比compile编译任务。
你能够添加本身的属性到一个任务。例如:添加一个属性名myProperty,集ext.myProperty的默认值,完成后,这个属性就能够像预约义任务同样读取和设置值。
注:这里的ext应是gradle自带的,去掉后找不到指定属性。
额外的属性并不局限于任务,你能够阅读更多关于他们的部分:13.4.2"额外属性" 。
Ant任务是gradle的一等公民。它依靠groovy对ant任务提供优秀的jicheng 。经过gradle使用比本来的build.xml更强大和方便。从下面的例子中,你能够学习到如何执行ant任务和访问ant属性。
注:没作过ant,略过
你能够对ant构建脚本作更多的操做, 使用Ant从Gradle
稍后,你将看到,这些方法能够共享过项目中子项目的构建。若是你的构建逻辑很是复杂,gradle为你提供其余很方便的方式来组织他。 Chapter 17, Using Ant from Gradle
Gradle容许定义一个或多个默认的构建任务。
这至关于运行clean,run。在多项目中构建的每个子项目均可以有特定的默认任务,若是一个子项目没有指定默认任务,则使用父项目的默认任务(若是存在的话)。
配置DAG
咱们将在56章创建生命周期中详细描述,它有配置阶段和执行阶段。配置阶段后,gradle应该知道全部被执行的任务。Gradle提供一个钩子使用这些信息。一个用例将检查要发布的任务在执行任务中间。基于此,你能够给变量赋予不一样的值。
在下面的例子中,执行分配和发布任务的结果变量是不一样的值。
重要的是,whenReady影响任务的发布在发布任务命令执行前。这些工做使得发布任务不是首要任务(任务传递给gradle命令)。
在这一章,咱们只是先看一下任务,这并非对任务介绍的结束,若是你想进入更多的细节,第15章, 更多的任务 。