1.基础知识:

Gradle提供了:构建项目的框架。但是其中起作用的是Plugin。

Gradle在默认情况下提供了很多常用的Plugin。例如:构建Java的Plugin、还有war、Ear等。

Gradle不提供内建项目的生命周期管理,只是java Plugin向Project中添加了很多Task,这些Task依次执行,营造了如同Maven般构建项目的生命周期。

Gradle中涉及的主要领域对象主要是Project和Task。Project为task提供上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。

一个Task表示一个逻辑上较为独立的执行过程,比如:编译Java源码、拷贝文件、打jar包。

一个Task可以读取和设置Project的Property以完成特定的操作。

在测试文件夹下,创建一个build.gradle。内容如下:

task helloWord << {
println "Hello World!"
}

这里“<<”表示向helloWorld中加入执行代码:其实是groovy代码。

Gradle提供了一整套DSL,底层依赖和执行的是groovy。

可以在build.gradle目录下,控制台中执行:

gradle helloWorld

则会输出:

Starting a Gradle Daemon (subsequent builds will be faster)

> Task :helloWorld
Hello World! BUILD SUCCESSFUL in 6s

上述的helloWorld类型是一个DefaultTask类型、是定义一个Task时的默认类型。我们也可以显示地生命Task的类型,或者自定义一个Task类型。

比如:定义一个用于文件拷贝的Task:

task copyFile(type: Copy) {
from 'xml'
into 'destination'
}

以上task的作用是将:xml文件拷贝到destination文件夹。不过文件夹是相对的,在build.grade目录。

Task也存在依赖关系(正是因为这个依赖关系表现出来了类似于maven的生命周期现象)

task taskB() {
println "i am taskB"
} task taskA(dependsOn: taskB) {
println "i am taskA"
}
//这里被依赖task必须在依赖task前声明

Gradle提供了很多Task,在控制台使用:

gradle tasks //查看所有gradle提供的task
gradle tasks --a//查看所有的task,包括我们自己定义的task

输出如下:

buildEnvironment - Displays all buildscript dependencies declared in root projec
components - Displays the components produced by root project 'gradleLearning'.
dependencies - Displays all dependencies declared in root project 'gradleLearnin
dependencyInsight - Displays the insight into a specific dependency in root proj
dependentComponents - Displays the dependent components of components in root pr
help - Displays a help message.
model - Displays the configuration model of root project 'gradleLearning'. [incu
projects - Displays the sub-projects of root project 'gradleLearning'.
properties - Displays the properties of root project 'gradleLearning'.
tasks - Displays the tasks runnable from root project 'gradleLearning'.

可以看到默认提供的Task。

dependencies用于显示Project的依赖信息,

Projects用来显示所有Project,包括根Project和子Project,而properties则用于显示一个Project所包含的所有Property。

默认情况下,Gradle为Project添加了很多Property,可以使用如下命令查看:

以上Property中,allprojects:表示所有的Project,这里包含一个根Project,在多项目构建中,它将包含多个Project;

buildDir表示构建结果的输出目录。

我们自定义的helloWorld和copyFile也成为Project中的Property。

另外:Project还包括用于执行Ant命令的DefaultAntBuilder(Property名为ant)和Project的描述属性description。

Gradle的快速入门的更多相关文章

  1. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  2. Gradle用户指南(章9:Groovy快速入门)

    Gradle用户指南(章9:Groovy快速入门) 你可以使用groovy插件来构建groovy项目.这个插件继承了java插件的功能,且扩展了groovy编译.你的项目可以包含groovy代码.ja ...

  3. Gradle学习系列之一——Gradle快速入门(转)

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  4. Gradle 1.12 翻译——第九章 Groovy快速入门

    由于时间关系,没办法同时做笔记和翻译,关于Gradle的用户指南,本博客不再做相关笔记,而只对未翻译章节进行翻译并在此发表. 有关其他已翻译的章节请关注Github上的项目:https://githu ...

  5. 【转载】Gradle学习 第九章:Groovy快速入门

    转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...

  6. Realm for Android快速入门教程

    介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...

  7. Spring Boot 2.0 的快速入门(图文教程)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! Spring Boot 2.0 的快速入门(图文教程) 大家都 ...

  8. Spring Boot 2.x基础教程:快速入门

    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  9. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

随机推荐

  1. 【leetcode刷题笔记】Text Justification

    Given an array of words and a length L, format the text such that each line has exactly L characters ...

  2. 一个可以查询CSS属性兼容性的网站。

    平时遇到CSS属性是不是道理具体兼容哪些网站,就可以直接上这个网站查询啦.http://www.caniuse.com/ 这个是网站地址.  例如查询 inline-block属性兼容性 就可以看到 ...

  3. NoSQL数据库memcache和redis区别

    在web后台发开面试中,经常会被问道memcache和redis的区别和使用情况. 其中memcache和redis都是基于内存存储的缓存系统,存储形式key--value键值对的形式. 区别: 1. ...

  4. K8s + Flannel 网络架构图

    这是Flannel官网给出的网络架构图 这是通过自己的理解画的逻辑结构图 查看bridge [root@node01 ~]# brctl show bridge name bridge id STP ...

  5. 【P2964】硬币的游戏(DP+前缀和)

    一道DP,思维难度真是不小. 首先对于这个题的数据,我们可以发现差不多可以支持n^2logn,但是貌似也不会有这种复杂度的线性DP(至少这个题看上去不是这样).所以我们考虑N^2做法.因为求得是价值和 ...

  6. java深入探究08-连接池,分页

    1.连接池 1)自定义连接池 思路:定义一个类Pool->添加4个属性(最大连接数,初始化连接数,当前连接数,用来存放连接对象的LinkList集合对象)->定义一个createConne ...

  7. 手动用maven安装jar的命令

    手动用maven安装jar的命令: mvn install:install-file -DgroupId=com.oracle.jdbc -DartifactId=ojdbc5 -Dversion=1 ...

  8. iOS中,Framework和.a的打包及使用

    最近在做一个小项目,需要给客户一个demo测试,有一部分核心代码暂时不想让客户知道,就想到了打包成framework或.a库.库有两种: 静态库:.a和.framework 动态库:.tbd和.fra ...

  9. linux(centos)安装Nexus

    1.解压nexus压缩包 tar xvzf ./nexus-2.13.0-01-bundle.tar.gz 2.修改配置文件: 修改jetty配置 [root@localhost nexus]# vi ...

  10. 利用matplotlib中imshow()函数绘图

    matplotlib  是Python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图 ...