Gradle 梳理:安装、入门使用方法
原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-1-installation-setup/
在这篇教程里,我们将主要讲解如何在我们自己的系统上安装、配置、原始版本的Gradle,并学习一些基本的Gradle命令行!Android Studio 本身集成了一个内部版本的Gradle,在安装Android Studio的时候,就自动给安装上了,这对于我们这样的小白对Gradle的理解没有帮助意义,所以我们单独将Gradle原始版本安装并配置独立出来便于我们的理解Android Studio里面的Gradle。
在开始之前,如果你想知道为什么Gradle对于编译来说是一个好工具,我建议你读一下这篇文章,虽然你不读也能读懂下面的内容,但是读一下或许能帮助打开你的思想,让你理解为什么很多公司和开发人员都在研究并应用Gradle!
下面的系列步骤将教你如何在你自己的电脑上配置Gradle!Gradle需要JDK,所以我假设你就是一个java开发者,并知道如何在你电脑上安装 JAVA JDK!
下载Gradle
在写作的时候,Gradle 已经发布到2.0,可以在这里下载。
先下载那个gradle-2.0-all.zip文件到你的电脑上,并解压,我将其解压到我的电脑的D:\Program Files\gradle-2.0-all。解压后有这些文件
你可能会问:为什么要安装一个原始版本的Gradle?Android Studio 本身只是简单的集成Gradle,当你使用Android Studio 在创建APP的时候,Android Studio 会调用Gradle的命令来做一些事情,而Android Studio 是如何在做这些事情的呢?如果你安装这个单独版本的Gradle,并使用其命令行来完成,你就很容易的知道Android Studio 在如何做了,否则的话,你会误以为Android Studio如何使用Gradle就是在玩魔术。
设置环境变量
\bin 文件夹包含了gradle脚本文件(unix和windows 都有),如果你要使用这个脚本,你就需要如下步骤:
1. 创建一个环境变量 GRADLE_HOME,并指向你的Grdle的安装路径,在我的电脑,这样添加:
2. 添加 %GRADLE_HOME%\bin 到你的PATH 环境变量,这样你就可以在CMD中任意使用gradle命令行了!
检查配置
为了检查刚才所设置的变量是否成功,你打开CMD,并执行如下命令:
gradle –v
如果配置成功就会有如下结果:
如果你没有看到这样的内容,那就检查一下路径是否正确。
关于Groovy
只要有Gradle就应该有Groovy,离开Groovy讨论Gradle是不完整的!Groovy是一个在JVM上非常流行并且强大的语言。
Gradle使用最受欢迎的特点有:
简洁
灵活
可以照你想象的方式自由配置
Groovy在实现上面的这些特性时扮演了非常重要的角色,基本就是Groovy提供这些功能的实现。Ant与Maven在编译时使用XML文件,而Groovy语言比XML文件要灵活强大很多,因为它不仅让文件在内容上看起来更加简洁,并且它提供修改或者制定标签的强大的可编程能力,也支持闭包等最新编程语言才具有的高级特性,并且可以实时编译!
那么问题就来了,你可能就会问:我需要去学习Groovy吗?
我试着回答你,不需要!除非你真的需要不按照约定去做一些你自己需要的需求,那么你可能就需要去学习Groovy,因为Gradle的弹性与灵活性就表现在这里,你可以照你想的方式来做一切。但是对于大多数情况,你只需要使用各种build.gradle模板(包含了 Groovy DSL),根本就不需要学习Groovy!
所以,要理解Gradle不需要你去好好的学习Groovy,当然如果你想理解Groovy的全部强大功能,你也可以自己去学习。这肯定会是有好处的!
Groovy在默认安装Gradle的时候,就已经安装了一个内部版本了,所以你不需要再去下一个独立版本的Groovy!
基本Gradle命令
我们还没有写任何源代码或者编译文件(Gradle),所以一会我们就来写。现在先来试试下面这个命令行:
gradle -q help
这个命令用来展示Gradle的帮助信息
-q:用来表示dos窗口中退出信息 ,这个命令在你只需要看一些输出的时候非常有用
gradle –q tesks
这个展示一个你当前可以使用的任务列表
gradle properties
这个将展示一个属性列表,这些属性gradle已经预定配置好的,你也可以修改大多数的实行在你自己的编译文件里。这些属性给你一个暗示:Gradle在执行你的任务之前为你的项目配置会做一大堆非常繁重的工作!
我们还没有编译自己的JAVA项目,这个会在以后的系列来做,我们先要理解Groovy是如何给Gradle提供了那一整套强大的编程能力!
我们先讨论一下build.gradle文件。这个标准的文件名就是我们自己的编译文件。这个文件包含了所有你需要Gradle去执行的命令。在完成了整个教程系列之后,我们就能够非常有效的去使用这个文件去创建或者使用各种顺序的插件、任务来完成我们自己的编译、测试、运行java程序的工作!
现在,你来跟着我做:
选择一个文件夹,在里面创建一个文件build.gradle
用记事本或者其他编辑器,将下面的内容添加的build.gradle文件里
task compileTask << {
System.out.println “compiling…”
}
现在打开CMD,并定位到你所创建的文件夹(使用 cd命令,你应该会吧),执行下面的代码
gradle –q tasks
这个就会输出一个可用的各种任务(tasks)列表,并且你会注意到在输出部分,与标准任务分开的,会有一个我们自己的创建的那个任务 compileTask:
我们的编译文件(build.gradle)就是一些列的任务(task)的组合,这里就带出了第一个的概念任务(task),任务指定了gradle编译系统要为我们执行的代码。
当前我们所指定的项目被称作compileTask,就如你所看到的,我们使用了Groovy代码来定义这个任务,这个任务所要做的事情,就是简单的执行一个 System.out.println。怎么样,现在能体会Groovy是如何强大了吧!
现在,我们要如何使用命令执行这个compileTask呢?
在做这个之前,我们还有一个知识点需要理解。当我们执行一个 gradle命令时,gradle编译系统就会在当前目录寻找文件名为build.gradle的文件。如果找到了,就使用这个文件。在我们上面的例子中,gradle编译系统找到了这个文件,所以gradle编译系统就将决定这个文件里是什么样的任务,并将其任务加到gradle编译系统的可执行任务里表里面去。
那么,我们执行即不带任何参数的gradle的命令,也不指定任何要被执行的任务时,会发生什么呢?现在试试,执行吧:
gradle
你应该会看到如下的输出:
这个输出很明显的告诉你,当你执行gradle的时候,你需要指定一个任务名。比如:gradle <task>。那么就让我们就试试使用我们自己的任务会是什么效果:
gradle –q compileTask
就有一个输出消息
现在让我们增加build.gradle文件一些其他的任务,比如:
task compileTask << {
System.out.println “compiling…”
}
task buildTask <<{
System.out.println “building…”
}
现在执行下面的命令:
gradle –q tasks
你应该会看到两个列表都在otherTasks里面:
现在你就可以执行
gradle compileTask
或者
gradle buildTask
那么如果我们想创建一个默认被执行的任务,可以让我不需要制定任务名要如何做呢?
要做到上面的需求,修改build.gradle文件
defaultTasks 'buildTask'
task complieTask << { System.out.println "compling..." } task buildTask <<{ System.out.println "building..." }
现在,如果我们简单的执行gradle -q,就会有如下输出:
最后一部分要讨论的,就是任务之间的相互依赖。这个问题是这样的情况:如果buildTask执行了,那么compileTask一定要在buildTask之前执行,这样就是说buildTask依赖于compileTask。要如此做,我们需要修改build.gradle文件如下:
defaultTasks 'buildTask'
task compileTask << { System.out.println "compling..." } task buildTask(dependsOn:compileTask) <<{ System.out.println "building..." }
你再次执行gradle -q,就应该有如下输出:
我们这篇文章里所讨论的gradle只有一些非常基本的功能。把你的编译文件想象成一些列的需要被执行的任务。如果你是一个java程序猿,并且对编译处理有一些经验(ant,Maven),那么你应该知道,要编译任务东西,我们都要做编译,构建,跑测试用例,打包等等等等,但是在Gradle里面通通没有这些了,只有各种任务。
通过使用的Gradle规定的约定和插件程序,我们并不需要手动去写任何任务。就能够自己定义一些列的步骤来构建文明之间的项目!
目前有的一些插件程序有 java plugin ,war plugin,appengine plugin, android plugin等等,那些已经定义一些列你可以使用的任务,我们也将在接下来的课程里看到更多!
转:https://www.cnblogs.com/pavkoo/p/4164931.html
Gradle 梳理:安装、入门使用方法的更多相关文章
- 二进制程序分析工具Pin在Windows系统中的安装和使用方法
这篇日志其实很弱智,也是因为换了新电脑,实验环境不全(当然,做这个实验我是在虚拟机里,因为接下来想拿些恶意代码的数据),所以这里记录一下在Windows下怎么安装和使用Pin这个程序分析领域最常用的工 ...
- Express安装入门与模版引擎ejs
Express安装入门与模版引擎ejs 目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set ...
- Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
摘要: Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1 安装遇到问题请文末留言. 悦动智能公众号:aibbtcom AI这个概念好像突然就 ...
- 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂安装过程详解及安装失败解决方法
因Excel催化剂用了VSTO的开发技术,并且为了最好的用户体验,用了Clickonce的布署方式(无需人工干预自动更新,让用户使用如浏览器访问网站一般,永远是最新的内容和功能).对安装过程有一定的难 ...
- 最快安装AndroidStudio的方法(小歪整理)
最快安装AndroidStudio的方法(小歪整理)-干货,加速加载和解决无法预览布局文件的等问题 最快安装AndroidStudio的方法(小歪整理) 1.使用解压压缩包的方式安装:android- ...
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
- VirtualBox安装Debian6的方法和步骤(详细)
下面是用VirtualBox安装Debian6的方法和步骤 l 新建一个文件夹,用于存放虚拟硬盘,如Debian l 打开VirtualBox,点击新建 l 输入虚拟机名称,Debian_6 l 给虚 ...
- Linux下man安装及使用方法
常用法: man [section] name 其中: section 指的是手册页的哪个部分,可以是1.2.3…8.,若不指定,man会按照次序依次查找,知道找到第一个. name 指的是某个命令. ...
- linux系统下yum 安装mysql的方法
菜鸟一个,记录下yum 安装mysql的方法,给需要的朋友也做个参考吧. 弄了个新vps,想安装最新版的mysql,网上查了相关资料,记录如下: 1.安装查看有没有安装过: yum ...
- Arduino101/Genuino101的安装入门
1.首先下载Arduino IDE 下载地址:http://pan.baidu.com/s/1gewqV2j 选择arduino-1.6.8-windows. ...
随机推荐
- pip安装ansible的过程
我的python环境已经搭好了pip,可以用pip直接安装. 1.首先要安装基础环境: 1)yum install gcc glibc-devel zlib-devel rpm-build opens ...
- Codeforces 396C
题意略. 思路: 将树上的节点编好dfs序,然后就可以用树状数组区间修改点查询了. 我们用 lft[v] 和 rht[v]来表示v的子树在dfs序中的左端和右端,这样才方便我们对树状数组的操作. 其实 ...
- 从SpringBoot构建十万博文聊聊限流特技
前言 在开发十万博客系统的的过程中,前面主要分享了爬虫.缓存穿透以及文章阅读量计数等等.爬虫的目的就是解决十万+问题:缓存穿透是为了保护后端数据库查询服务:计数服务解决了接近真实阅读数以及数据库服务的 ...
- 第8章 浏览器对象模型BOM 8.2 location对象
location 是最有用的 BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能.事实上, location 对象是很特别的一个对象,因为它既是 window 对象的属性, ...
- 位运算总结(Bit Operation)
位运算 数字用二进制表示后的运算 无论是有符号,无符号还是其他各种类型的数.它们之间的转换的基石就是二进制的表达式没有发生改变,变得只是转换的表达式. 1.简单的布尔运算 Boolean algebr ...
- 深入理解static关键字
class A{ public int i = 10; public void show(){ System.out.printf("%d",i); } } class M{ pu ...
- B-xor_2019牛客暑期多校训练营(第四场)
题意 给出n个数组(每组数个数不定),m个询问 l, r, x 序号在区间\([l,r]\)的每个数组是否都可以取出任意个数异或出x 题解 判断一个数组能否异或出x,是简单的线性基问题 判断多个线性基 ...
- CF 435B Little Pony and Harmony Chest
Little Pony and Harmony Chest 题解: 因为 1 <= ai <= 30 所以 1 <= bi <= 58, 因为 59 和 1 等效, 所以不需 ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- Vulkan(1)用apispec生成Vulkan库
Vulkan(1)用apispec生成Vulkan库 我的Vulkan.net库已在(https://github.com/bitzhuwei/Vulkan.net)开源,欢迎交流. apispec. ...