博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle构建脚本概要之构建块
阅读量:6838 次
发布时间:2019-06-26

本文共 2241 字,大约阅读时间需要 7 分钟。

  hot3.png

每个Gradle构建都包含三个基本构建块:projecttaskproperty每个构建至少一个project,进而又包含一个或多个task。project和task暴露的属性可以用来控制构建

项目

在Gradle术语中,一个项目(project)代表一个正在构建的组件(比如,一个JAR文件),或一个想要完成的目标,如部署应用程序。每个Gradle构建脚本至少定义一个项目,当构建进程启动后,Gradle基于build.gradle中的配置实例化org.gradle.api.Project类,并且能够通过project变量使其隐式可用。

一个project可以创建新的task,添加依赖关系和配置,并应用插件和其他的构建脚本。它的许多属性,如name和description,可通过gettersetter方法访问。为什么我们要过早地谈论Gradle的API?你会发现了解Gradle的基本知识之后,你想要更进一步地将概念应用到真实项目中,API就是最有效的使用Gradle的关键

在构建中,project实例让你可以通过代码来访问Gradle的所有特性,比如task的创建和依赖管理。记住,当访问属性和方法时,不需要使用project变量——它会假设你是指Project实例。下面的代码片断展示了如何合理地调用Project实例上的方法:

//在不显示使用project变量的情况下设置项目描述setDescription("myProject")//在不使用project变量的情况下,通过Groovy语法来访问name和description属性println "Description of project $name:  " + descriptiontask testProjectObj << {  println "ddd"}

运行:

$ gradle testProjectObj -q

161815_J5cv_168814.png

任务

task的一些重要功能:任务动作(task action)和任务依赖(task dependency)。任务动作定义了一个当任务执行时最小的工作单元。这可以简单只打印文本如“Hello world!”或复杂到编译Java源代码。很多时候,运行一个task之前需要运行另一个task,尤其是当task的运行需要另一个task的输出作为输入来完成自己的行动时更是如此。比如,你已经看到过在打包成一个JAR文件之前需要先编译Java源代码。task对于的Gradle的API是org.gradle.api.Task接口。

属性

每个ProjectTask实例都提供了可以通过getter和setter方法访问的属性。一个属性可能是一个任务的描述或项目的版本。后面你会在实例中读和修改这些实例的属性值。通常,你需要定义自己的属性。比如,你可能想要声明一个变量,该变量引用了在同一个构建脚本中多次使用的一个文件。Gradle允许用户通过扩展属性自定义一些变量

扩展属性

Gradle的很多领域模型类提供了特别的属性支持。在内部,这些属性以键值对的形式存储。为了添加属性,你需要使用ext命名空间。让我们来看一个具体的例子:

//只在初始声明扩展属性时需要使用ext命名空间project.ext.myProp = 'myValue'ext {  someOtherProp = 123}//使用ext命令空间访问属性是可选的println myProp == 'myValue'println project.someOtherPropext.someOtherProp = 567println someOtherProptask exttest << {  println 'ext property test'}

执行:

$ gradle exttest -q

172623_r5g7_168814.png

Gradle属性

类似地,额外的属性也可以通过属性文件来提供。Gradle属性可以通过在gradle.properties文件中声明,直接添加到项目中。这个文件位于<USER_HOME>/.gradle目录或项目的根目录下。这些属性可以通过项目实例访问。记住,即使你有多个项目,每个用户也只能有一个Gradle属性文件在<USER_HOME>/.gradle目录下。这是目前Gradle对它的限制。在这个属性文件中声明的属性对所有的项目可用。我们假设下面的属性是在gradle.properties文件中声明的:

exampleProp = myValuesomeOtherProp = 455

你可以按照如下方式访问项目中的这两个变量:

assert project.exampleProp == 'myValue'task printGradleProperty << {    println "Second property: $someOtherProp"}

声明属性的其他方式

对于前面两种方式,我们大多用来声明自定义变量及其值。Gradle也提供了很多其他方式为构建提供属性,例如:

  • 项目属性通过 -P 命令行选项提供

  • 系统属性通过 -D 命令行选项提供

  • 环境属性按照这样的模式提供:ORG_GRADLE_PROJECT_propertyName = someValue

这里就不给出示例了。

转载于:https://my.oschina.net/fhd/blog/523132

你可能感兴趣的文章
重置outlook2010账户
查看>>
SQL Server 2016新特性:Query Store 使用Query Store监控性能
查看>>
http与www服务基础概念详解
查看>>
Outlook 2013中 IMAP配置
查看>>
Kerberos简介
查看>>
Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error
查看>>
Linux下RPM软件包的安装、卸载和tar.gz 安装方法
查看>>
js鼠标提示
查看>>
Node.js 初识 HTTP 模块
查看>>
Linux命令(1):cd命令
查看>>
结婚礼服时装秀 机器人新娘上阵
查看>>
vim+python打造自己的IDE插件推荐
查看>>
Netty In Action中文版 - 第十二章:SPDY
查看>>
tcp/ip 11种状态
查看>>
base虚拟机的安装 和 varnish(rhel6.5)
查看>>
zoom与scale的异同点
查看>>
Mysql建表遇到121和150的解决办法
查看>>
IE6下png图片透明代码
查看>>
搭建backup服务器rsyncdaemon服务模式之一rsync服务端配置
查看>>
使用OSOT来优化虚拟桌面
查看>>