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。

最新文章

  1. java分享第十六天( java读取properties文件的几种方法&amp;java配置文件持久化:static块的作用)
  2. 控制ASP.NET Web API 调用频率
  3. Js实现简单的洗牌
  4. java中的程序流程控制
  5. Oracle 12c 的新功能:模式匹配查询
  6. POJ1737 Connected Graph
  7. 多网卡 指定网卡到指定IP
  8. Ruby Class
  9. CorAnimation7-高效绘图、图像IO以及图层性能
  10. .NET MVC执行过程
  11. Silverlight学习(二)
  12. 运行jar包
  13. CodeForces 709C Letters Cyclic Shift
  14. JavaScript忍者秘籍——函数(下)
  15. 图片应该放在drawable-hdpi下不要放在drawable下
  16. Java并发编程——BlockingQueue
  17. java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】
  18. Vue.js简单记录
  19. u-boot2010.06移植阶段三--norflash驱动
  20. javaScript中对象属性的访问

热门文章

  1. linux虚拟机ping通主机
  2. Asp.net 5 (MVC6) Areas 分区
  3. 微信小程序与微信公众号同一用户登录问题
  4. ggplot笔记001——ggplot2安装
  5. IOS 发布被拒 PLA 1.2问题 整个过程介绍 03 个人账户升级公司账户
  6. UOJ104 【APIO2014】Split the sequence
  7. vijos 1250 最勇敢的机器人 分组背包+并查集
  8. Python快速学习-获取对象信息
  9. Java-集合类源码List篇(二)
  10. sql print