Gradle用户指南
- 下载安装gradle 2.1
- 安装先决条件:gradle安装需要1.6或者更高版本的jdk(jre)(可以使用java –version 验证),gradle自带groove lib库,所以不必安装groove,任何已安装groove都将被忽略。Gradle使用path路径下的jdk,当然,你也可以设置JAVA_HOME指向你的jdk安装路径。
- Gradle发行版是一个zip压缩文件,完整的发行版包括:
- 二进制文件
- 用户指南(html和pdf)
- Dsl参考指南
- API文档(Javadoc和Groovydoc)。
- 大量示例,包括用户指南中引用的例子,一些完善的和更复杂的构建,你可以用来搭建自己的构建。
- 创建新的环境变量GRADLE_HOME,值为gradle的安装目录,另需
把/bin添加到path变量中。 - 你可以运行gradle –v来验证安装,输出显示gradle版本和本地环境变量配置(groove版本,jvm版本等等)。
- 你可以通过设置jvm环境变量来运行gradle。当然,你也可以使用GRADLE_OPTS 或 JAVA_OPTS ,或两者兼而有之。JAVA_OPTS环境变量按照惯例是许多java应用程序共享的。一个典型用例是设置HTTP代理JAVA_OPTS和GRADLE_OPTS内存选项。这些变量也可以设置gradle和gradlew脚本的开始选项。
注:这些不能用来设置命令行jvm选项。
- 构建脚本基础
- Gradle中的一切都简历在2个基础之上:项目projects和任务task
每个gradle构建都由一个或多个项目组成。一个项目代表什么取决于你通过gradle怎么做。例如:一个项目可能代表一个jar lib库或者一个web应用程序;它也可能代表一个从其他项目jars提取出的zip分布;一个项目并一定代表一个构建;它可能代表一件事情要做;比如,部署你的应用程序到工作台或者生产环境中;如果这看起来有点模糊,不要担心,Gradle build-by-convention支持为一个项目添加更具体的定义。
每个项目都有一个或多个tasks任务组成。一个任务代表一个一些构建工作的原子块。这可能是编译一些类,创建一个JAR,生成javadoc, 或发布存档到仓库。
现在,我们将看看定义一些简单的任务在一个构建一个项目。 后面的章节将看 处理多个项目和更多关于工作项目和任务。
- Hello World
使用gradle命令运行gradle构建。这个命令会在当前目录查找build.gradle文件,我们通常把这个文件叫做构建脚本。虽然严格来说它是一个构建配置脚本,正如我们稍后所看到的那样,这个脚本定义一个项目及其文档。
让我们来尝试创建一个构建脚本:build.gradle
在一个命令行shell,移动到build.gradle所在目录并执行构建脚本:gradle -q hello
一个构建脚本的执行:
有一个速记方法来定义一个任务,例如上面的hello,这个速记方法看起来更简洁:
上面定义一个名叫 hello的任务闭包执行脚本。我们将在整个用户指南中使用这种任务定义风格。
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章, 更多的任务 。
Gradle用户指南的更多相关文章
- Gradle用户指南(章9:Groovy快速入门)
Gradle用户指南(章9:Groovy快速入门) 你可以使用groovy插件来构建groovy项目.这个插件继承了java插件的功能,且扩展了groovy编译.你的项目可以包含groovy代码.ja ...
- 《gradle 用户指南中文版》目录
gradle 用户指南 版权所有©2007-2017 Hans Dockter,Adam Murdoch只要您不对这些副本收取任何费用,并且进一步规定,每个副本都包含本版权声明,无论是以印刷版还是电子 ...
- Gradle用户指南(1)-Gradle安装
前置条件 Gradle 需要 Java JDK 或者 JRE,版本是 6 及以上.Gradle 将会装载自己的 Groovy 库,因此,Groovy 不需要被安装.任何存在的 Groovy 安装都会被 ...
- 《gradle 用户指南中文版》 第一部分、关于Gradle
第一部分.关于Gradle 目录1.介绍1.1 关于本用户指南2.概述2.1 特性2.2 为什么选择Groovy? 上一页 | 目录 | 下一页
- 《gradle 用户指南中文版》 第1章、简介
第1章.简介 目录 1.1 关于本用户指南 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具. 这里我们将介绍Gradle,我们认为gradle让java项 ...
- Gradle用户指南(3)-构建Java项目
1.构建基本的Java项目 为了使用 Java 插件,添加下面代码到构建文件: build.gradle apply plugin: 'java' 这个就是 定义一个 Java 项目的全部.它会将 J ...
- Gradle用户指南(2)-基本命令
1.定义任务 使用task 关键字来定义gradle 任务 例:创建一个 build.gradle 命名的文件: build.gradle task hello { doLast { println ...
- Gradle用户指南(章8:依赖关系管理基础)
章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...
- 《gradle 用户指南中文版》第3章 安装 gradle
macOS 下安装 gradle,只要可以安装sdk的系统,使用sdk来安装,那么安装方式基本是一样的. Gradle在所有主要操作系统上运行,只需要安装Java JDK或JRE版本7或更高版本.要检 ...
随机推荐
- 通过FTP自动上传当天的备份数据
@echo off del f:\ftpcfg.txt echo open 192.168.123.2>f:\ftpcfg.txt echo WMS>>f:\ftpcfg.txt e ...
- (C/C++) memset
C语言: memset extern void *memset(void *buffer,int c,int count); #include <string.h> 功能:把b ...
- /proc/sys/net/ipv4/
/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的"Solaris middle star".这个文件控制发送IC ...
- BEvent_客制化Event Agent通道(案例)(待整理)
2014-09-09 Created By BaoXinjian
- 把centos 的mysql 重装一下 把原来的lnmp删除,怎么备份还原数据库
mysqldump --lock-all-tables -u root -p --databases mydb > /opt/database/mydb.sql,或者直接备份mysql的数据存储 ...
- python实现字体闪图
!/usr/bin/env python from future import print_function import os.path import sys from optparse impor ...
- ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统)
ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统) -- =============================================-- Crea ...
- java8 JDK8 元空间
一. JDK8 元空间概念 二. PermGen vs. Metaspace 运行时的比较 一. JDK8 元空间概念 很多开发者都在其系统中见过“java.lang.OutO ...
- Rstudio匹配中文
之前在操作csv文件时一般是将中文字符在excel或用Perl将其中的中文转换成对应的英文,但是最近碰到不得不在R里面进行中文符操作,发现R里面的匹配是无法识别的中文符的.比如: df <- r ...
- IronPython调用C# DLL函数方法
C# DLL源码 using System; using System.Collections.Generic; using System.Text; using System.Security.Cr ...