Gradle学习之自定义属性

项目属性的精粹:Gradle中配置属性文件的全面指南 自定义属性文件用于存储应用的配置信息。# 在src/main/resources/application.properties中设置应用配置Gradle允许在构建过程中读取自定义属性文件。// 在build.gradle中读取自定义属性文件${ 阅读详情
请通过以下方式下载本系列文章的Github示例代码:
git clone https://github.com/davenkin/gradle-learning.git
 
 
在前面的文章中我们讲到,设置和读取Project的Property是使用Gradle的一个很重要的方面。比如,很多Plugin都会向Project中加入额外的Property,在使用这些Plugin时,我们需要对这些Property进行赋值。
 
Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:
project:Project本身
name:Project的名字
path:Project的绝对路径
description:Project的描述信息
buildDir:Project构建结果存放目录
version:Project的版本号
 
以下,我们首先设置Project的version和description属性,再定义showProjectProperties以打印这些属性:
 
version = 'this is the project version'
description = 'this is the project description'
task showProjectProperties << {
  println version
  println project.description
}
 
请注意,在打印description时,我们使用了project.description,而不是直接使用description。原因在于,Project和Task都拥有description属性,而定义Task的闭包将delegate设置成了当前的Task,故如果直接使用description,此时打印的是showProjectProperties的description,而不是Project的,所以我们需要显式地指明project。有关delegate的更多知识,请参考本系列的这篇文章。
 
Gradle还为我们提供了多种方法来自定义Project的Property。
 
(1)在build.gradle文件中定义Property
在build.gradle文件中向Project添加额外的Property时,我们并不能直接定义,而是应该通过ext来定义。如果要添加一个名为property1的Property,我们应该:
 
ext.property1 = "this is property1"
 
另外,我们也可以通过闭包的方式:
 
ext {   property2 = "this is property2"}
 
在定义了Property后,使用这些Property时我们则不需要ext,而是可以直接访问:
 
task showProperties << {
  println property1
  println property2
}
 
事实上,任何实现了ExtensionAware接口的Gradle对象都可以通过这种方式来添加额外的Property,比如Task也实现了该接口。
 
(2)通过命令行参数定义Property
Gradle还提供了-P命令行参数来设置Property,比如:
 
task showCommandLieProperties << {
  println property3
}
 
在执行“gradle showCommandLieProperties”时,终端输出如下:
 
* What went wrong:Execution failed for task ':showCommandLieProperties'.> Could not find property 'property3' on task ':showCommandLieProperties'.
 
表示property3并没有被定义,在调用gradle命令时,通过-P参数传入该Property:
 
gradle -Pproperty3="this is property3" showCommandLieProperties
 
此时终端显示:
 
:showCommandLiePropertiesthis is property3BUILD SUCCESSFUL
 
(3)通过JVM系统参数定义Property
我们知道,在java中,我们可以通过-D参数定义JVM的系统参数,然后在代码中可以可以通过System.getProperty()进行获取。在Gradle中,我们也可以通过-D的方式向Project传Property,只是此时我们需要遵循一些约定:每一个通过-D方式声明的Property都需要以“org.gradle.project”为前缀,对于上面的showCommandLieProperties,我们也可以通过以下方式
设置property3:
 
gradle -Dorg.gradle.project.property3="this is another property3" showCommandLieProperties
 
(4)通过环境变量设置Property
我们还可以通过设置环境变量的方式设置Project的Property。这种方式和(3)一样,需要我们遵循一些约定:在定义环境变量时,每一个Property都需要以“ORG_GRADLE_PROJECT_”为前缀:
 
export ORG_GRADLE_PROJECT_property3="this is yet another property3"
 
在调用showCommandLieProperties时,我们便不需要传入命令行参数了:
 
gradle showCommandLieProperties
 
在笔者所工作的项目中,我们的持续集成服务器便是通过这种方式为Gradle设置Property的。
【BUAA】【计组】计算机组成 pre (含详细解析) BUAA 计算机组成 本文章旨在为@走肖暂时无法接通的系列文章创造一个目录,收藏本文章,方便查阅! 1. 入门测试 2. 基础知识 3. Logisim   欢迎来到 Logisim 的世界   Logisim 门电路   Logisim 组合电路   Logisim 时序电路   Logisim 仿真与调试   应用与挑战 4. Verilog 与仿真工具   前言   ISE 入门   VCS 入门   Verilog 语法   Verilog 题目实例与分析   Verilog 工程的设计开发调试 阅读详情

相关推荐

开发者的避坑指南:在Apple Silicon Mac上构建RocketMQ Python客户端的完整心路历程

本文详细记录了在Apple Silicon Mac上构建RocketMQ Python客户端的完整过程,重点解决了架构兼容性问题。通过源码编译rocketmq-client-cpp库,修复构建脚本和CMake配置,最终成功在M2芯片MacBook Pro上部署RocketMQ Python客户端,为开发者提供了实用的避坑指南。

Pepper的专栏 696

Gradle学习3——自定义属性

读取和设置Project和Task的属性是很重要的一块内容,每个Project和Task实例都提供了可以通过getter和setter方法访问的属性。一个属性可能是一个任务的描述或者项目的版本。你也可以定义自己的属性。Gradle允许用户通过扩展属性自定义一些变量。还有,很多Plugin都会加入扩展属性,可以通过设置属性来控制使用Pulg...

weixin_33819479的博客 398

STM32----SPI+DMA高效读写外部Flash的配置与实战

本文详细介绍了STM32通过SPI+DMA高效读写外部Flash的配置与实战方法。针对大量数据传输场景,使用DMA技术可显著提升系统效率,释放CPU资源。文章包含完整的代码实现、常见问题调试技巧以及性能优化建议,帮助开发者快速掌握这一关键技术。

pea55的博客 1031

指定Gradle构建属性

属性是用于轻松自定义Gradle构建和Gradle环境的宝贵工具。 我将在本文中演示一些用于指定Gradle构建中使用的属性的方法。 Gradle支持项目属性和系统属性 。 这篇文章中有趣的是两者之间的主要区别是如何访问它们。 通过常规Java / Groovy系统属性访问方法访问系统属性时,项目属性更有助于按名称直接访问。 使用-P从命令行传递项目属性 将属性传递到Gradle构建...

最佳 Java 编程 408

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1395

Python实战:用pdfplumber从PDF中精准提取表格数据(附完整代码)

本文详细介绍了如何使用Python库pdfplumber从PDF中精准提取表格数据,包括环境配置、标准与复杂表格处理策略、数据清洗与验证等实战技巧。通过完整代码示例,帮助数据分析师和财务专业人士实现PDF数据提取的自动化,提升工作效率。

weixin_29061821的博客 400

【Android Gradle 插件】Gradle 扩展属性 ① ( Gradle 扩展属性简介 | Gradle 自定义 task 任务示例 )

一、Gradle 扩展属性简介、 二、Gradle 自定义 task 任务示例 ( 扩展属性示例 )

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1275

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

Gradle版本管理的一些事

打开一个新项目,往往会下载Gradle及其插件,而且很慢,有时如果配置不当,还会影响到项目的构建。为了提高效率,可以继续往下看。 指定Gradle版本或版本升级一般分两步: 一、修改gradle-wrapper.properties gradle-wrapper.properties更改版本号: distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip 注意: 这里放的是gradle版本。 这样就会下.

IT晴天 600

我的PCB设计经验总结及最容易犯错的100例之二B07

本文总结了PCB设计中的常见错误及解决方法。作者通过记录自身及他人的设计失误,系统归纳了高频、隐蔽且致命的问题,如电容中间穿线、高速信号跨分割、锐角布线等。重点提出从错误中提炼规律,建立分类案例库,并开发自动化检查工具的方法。案例涵盖高速信号处理、电源设计、EMC防护等关键领域,强调通过原理理解和实践验证提升设计质量。文章建议工程师建立个人错误数据库,从被动纠错升级为主动预防,最终形成系统化的设计方法论,提高PCB一次成功率。

启芯硬件的博客 85

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

不得不学之「 Gradle」 ③ 构建脚本基础

其实学到这里,对于 AndroidStudio 里的 Gradle 还是不懂, 好多东西见过 ,可是 不知道具体是干啥的,所以学好基础,到后面再看 Android Gradle 就很简 单了 。我 们接着学习基础。 带着疑问去学习。 什么是 Settings 文件? 什么是 Build 文件? 什么是 Project? 什么是 Task? 我们在 ...

Mr.SSY的博客 227

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Gradle for Android 第二篇( Build.gradle入门 )

理解Gradle文件 编写简单的构建任务 自制构建脚本 理解Gradle脚本 当然我们现在讨论的所有内容都是基于Android studio的,所以请先行下载相关工具。当我们创建一个新的工程,Android studio会默认为我们创建三个gradle文件,两个build.gradle,一个settings.gradle,build.gradle分别放在了根目录和mou

u012014301的博客 531

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享

PlayView属性动画拓展(一)自定义 View 基础Drawable 波浪动画3D 省市联动效果滚轮,很像 ios 的效果在 buildSrc 内包含一些关于 gradle 构建流程的自定义内容,包括实现生成 apk 根据 flavor 改名。对构建流程中执行的 task 按执行时长打印,发现编译耗时的 task在构建流程中对特定注解的方法或类进行耗时检测。对代码中点击事件的插桩埋点通过配置对三方库中的代码进行特定的插桩,实现特定的功能。以下是部分内容截屏动画。

2401_84123201的博客 714

Android开发之深入理解Android Studio构建文件build.gradle配置

摘要:每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1、applicationId和package属性值的关系,2、怎么配置安全的自定义签名,3、两种构建类型的区别,4、为什么要定制产品的偏好配置?,5、怎么才能加快DEX文件的生成速度,6、为什么要将一个apk拆分成多个?

大钊IT博客 3018

Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享(1)

PlayView属性动画拓展(一)自定义 View 基础Drawable 波浪动画3D 省市联动效果滚轮,很像 ios 的效果在 buildSrc 内包含一些关于 gradle 构建流程的自定义内容,包括说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。

2401_84545291的博客 890

Android帧动画特点,GitHub - REBOOTERS/AndroidAnimationExercise: Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享...

AndroidAnimationExercise这是一个关于Android中各种View的集合,里面包含自己日常开发和博客总结中的代码。主要内容是Android动画、Android自定义View 相关的知识,包含一些常见应用中动画效果的模仿实例.随着时间的推移,里面积累的很多代码,大致用5个Fragment 做了分类:扫一扫体验打开ImitateFragment (模仿三方应用特效)仿新浪微博雷达...

weixin_35725821的博客 223

Android自定义圆形下载进度条,Android自定义之圆形进度条

先来看看效果图,有图才有真相: UsageAndroid Studio 使用Gradle构建dependencies { compile 'com.github.ws.circleprogress:circleprogress:2.0.4' }Mavencom.github.ws.circleprogresscircleprogress2.0.4pomeclipse完成上面的依赖后,在布局文件中...

weixin_39787792的博客 549

Gradle学习目录

Gradle学习目录 groovy学习(一) 开始使用gradle(二) gradle与project(三) Gradle属性(四) task详解(五) Gradle增量编译(六) gradle挂接到构建生命周期(七) gradle 的 依赖管理(八) gradle的多项目构建(九) 自定义Gradle插件(十) ...

heihei 200

Gradle 基础学习(九) 认识Gradle属性和构建环境配置

Gradle提供了多种机制给开发者来配置Gradle自身的行为和具体项目的行为。

Roy1986613的博客 1807

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么? 想象一下,你有一个大型的乐高项目,你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中,build.gradle 就是这个清单,它告诉计算机如何构建(组合)你的软件项目。

一切总会归于平淡 5044

Gradle学习系列之五——自定义Property

Gradle学习系列之五—— 自定义Project的Property 在前面的文章中我们讲到,设置和读取Project的Property是使用Gradle的一个很重要的方面。比如,很多Plugin都会向Project中加入额外的Property,在使用这些Plugin时,我们需要对这些Property进行赋值。 Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有: project Project本身 name Project的名字 path

Ryze 653
上一篇: Gradle学习之增量式构建
下一篇: Gradle学习之使用java plugin
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值