Gradle-user guide-第6章 构建脚本基础(译)

第6章 构建脚本基础(6.1-6.5)

6.1. 项目和任务

Gradle里的一切都基于这两个基本概念:项目和任务(projects and tasks

每个Gradle构建都由一个或多个项目构成。一个项目代表什么取决于你想要用Gradle去做什么。举个列子,一个项目可能代表一个Jar或者一个web应用,它也可能代表一个由其他项目生成的jar包组成的ZIP压缩包。项目不必代表准备构建的东西,它可能代表准备完成的事情,如,部署你的应用到生产环境。如果你仍感觉有些模糊也不用担心。Gradle的惯例构建的支持,增加了对项目是什么更加充分的定义。

每个Gradle项目都由一个或多个任务构成。任务代表构建执行的一些原子级别的操作,可能是编译一些classes,创建一个Jar,生成Javadoc,把一些存档(archives)发布到仓库(repository)。

目前,我们将关注在单项目构建中定义一些简单的任务。之后的章节中,我们会关注多项目构建,以及多项目和多任务混合的构建。

 6.2.Hello world

使用gradle命令运行Gradle构建,gradle命令会在当前目录下寻找名为build.gradle的文件,我们称这个文件为构建脚本(buildscript),虽然确切来说,它是一个构建配置脚本(build configuration script)。这个脚本定义了一个项目和它的一些任务。

试着创建下面名为build.gradle的构建脚本。

例子6.1第一个构建脚本

build.gradle

task hello{
    do last{
        println 'hello word!'
    }
}

在命令行里,进入该构建脚本所在目录,通过命令gradle -q hello来执行这个构建脚本。

例子6.2脚本的执行

gradle -qhello命令的输出

> gradle -q hello
Hello world!

这里发生了什么?上面的构建的脚本定义了一个单一的任务,hello,给它添加了一个action,当你运行gradle hello,Gradle执行hello任务,接着就执行你提供的action,这个action是一个简单的包含了一些Groovy代码的闭包。

如果你觉得这些看上去和Ant的目标(targets)很相似,好吧,你是对的。Gradle任务等同于Ant中的目标,但是,你会看到gradle任务是更加强大的。我们使用一个不同于Ant的术语,是因为我们认为任务(task)比目标(target)更加贴切。不过,这里术语的使用和Ant产生了冲突,在Ant中,称命令为任务,如javaccopy,因此当我们说到任务时,总是指的是Gradle里的任务,等价于Ant中的目标,而说到Ant任务时,会明确地说成Ant任务(anttask)。

6.3快捷任务定义

有一种定义任务的简洁方式

例子6.3快捷任务定义

build.gradle

task hello << {
    println 'Hello world!'
}

再次,这定义了一个叫做hello的任务,它是一个可以执行的闭包,在贯穿整个用户手册中,我们使用这种定义任务的方式。

6.4构建脚本代码

Gradle构建脚本向你展示Groovy的所有能力,作为开胃菜,看看这个:

例子6.4Gradle任务中使用Groovy

build.gradle

task upper << {
    String someString = 'mY_nAmE'
    println "Original: " + someString 
    println "Upper case: " + someString.toUpperCase()
}

使用gradle-q upper,你就会看到以下输出:

> gradle -q upper
Original: mY_nAmE
Upper case: MY_NAME
6.5任务依赖
正如你可能已经猜到的,你可以申明任务之间的依赖性。
例子6.6申明任务之间的依赖性

build.gradle

task hello << {
    println 'Hello world!'
}
task intro(dependsOn: hello) << {
    println "I'm Gradle"
}

使用gradle -q intro,你就会看到以下输出:

> gradle -q intro
Hello world!
I'm Gradle
再加入一个依赖之前, 这个依赖的任务不需要提前定义了,来看下面的例子。
build.gradle

task taskX(dependsOn: 'taskY') << {
    println 'taskX'
}
task taskY << {
    println 'taskY'
}

使用gradle -q taskX,输出如下:

> gradle -q taskX
taskY
taskX
taskX taskY的依赖性在taskY定义之前就被申明了,这中定义方式对多项目构建来说是非常重要的。任务依赖性的更多细节将会在15.4中讨论。
注意,当你将要引用的任务还没有定义时,不要使用快捷标记。(参考6.8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原理是计算机专业的一门核心课程,旨在介绍编程序构造的一般原理和基本方法。编原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编原理是计算机专业的一门核心课程,旨在介绍编程序构造的一般原理和基本方法。编原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编原理是计算机专业的一门核心课程,旨在介绍编程序构造的一般原理和基本方法。编原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编原理是计算机专业的一门核心课程,旨在介绍编程序构造的一般原理和基本方法。编原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编原理是计算机专业的一门核心课程,旨在介绍编程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值