Gradle - 构建基础

JSONObject所需jsonlib.jar及其依赖相关包(最新版本) 打包了最新版本的json-lib.jar及其依赖包。里面包括:json-lib-2.4-jdk15.jar、commons-beanutils-1.9.jar、commons-collections-3.2.jar、commons-lang-2.6.jar、commons-logging-1.2.jar、ezmorph-1.0.6.jar、morph-1.1.1.jar以及commons-httpclient-4.3.1.jar 立即下载
subprojects {
    apply plugin:'java'
    repositories{
        jcenter()
    }
}

我们可以在rootProject中对子Project进行统一的配置,但是不要误以为subProjects只能配置,它们只是两个方法,接受一个闭包作为参数,对工程进行遍历。遍历的过程中调用我们自定义的闭包,所以我们可以在闭包里面配置、打印、输出或者修改Project的属性都可以。

1、Task创建

task customTask {
    doFirst {
        println "doFirst"
    }
    doLast {
        println "doLast"
    }
}

这里的task看着像是一个关键字,其实它是Project对象的一个函数。其中task为函数名,customTask为第一个参数,闭包为第二个参数。

    Task task(String name, Closure configureClosure);

另外一种创建任务的方式:

tasks.create(taskName){......}

2、Task依赖

创建任务的时候,可以通过dependsOn指定依赖的其他任务。

Task Api:

@Internal
    Set<Object> getDependsOn();

因此,我们在创建task的时候,在其闭包中对Task进行配置 - 闭包委托;

task customTask {
    dependsOn customTask1, customTask2
    doLast {
        println "multiTask"
    }
}

被依赖的任务会先执行,然后再执行当前任务。

3、Task间通过Api控制、交互

创建一个任务和定义一个变量一样,变量名就是我们定义的任务名,类型是Task。所以可以通过任务名,使用Task的Api访问它的方法、属性或对任务进行重新配置等。

由于脚本是顺序执行的,因此使用任务名操作任务之前,必须先定义声明。

task exeHello {
    println "hello"
}

exeHello.doFirst {
    println "hello - doFirst"
}

exeHello.doLast {
    println "hello - doLast"
}

直接通过任务名操纵任务的原理:

Project在创建该任务的时候,同时把该任务对应的任务名注册为Project的一个属性,类型名为Task。

exeHello.doLast {
    println project.hasProperty('exeHello')
}
--------------
true

我们可以通过project.hasProperty方法检查是否有这个属性。

既然可以通过Api操纵任务,那么当创建多个任务的时候,同样可以通过APi让它们相互访问,比如增加一些依赖等,就像两个变量相互访问一样。

4、自定义属性

Project和Task都允许用户添加额外的自定义属性,要添加额外的属性,通过应用属性对应的ext属性即可实现。添加之后可以通过ext属性对自定义属性读取和设置。

单个:
ext.age = 18
多个:
ext {
    name = "json"
    age = 18
}

相比于局部变量,自定义属性有更为广泛的作用域,你可以跨Project、跨Task访问这些自定义属性,只要你能访问这些属性所属的对象,那么这些属性都可以被访问到。

自定义属性不仅可以应用于Project和Task上,还可以应用在SourceSet中,这样等于每种SourceSet又多了一个可供配置的属性。

5、脚本即代码,代码也是脚本

虽然我们在一个gradle文件中写脚本,但是我们写的是代码,这一点要记清楚。这样你才能时刻使用Groovy、Java以及Gradle的任何语法和Api帮你完成你想做的事情。不要被脚本两个字限制了,是脚本没错,但是不是简单的脚本。在这个脚本文件上你可以定义Class、内部类、导入包、定义方法、常量、接口、枚举等,都是可以的,灵活运用。

------> 脚本文件中搭配Java、Gradle、Groovy,不要把它当成简单的脚本。

gradle-parser:解析gradle文件并返回JSON Gradle解析器 一个微小的node.js Web服务,用于解析来自build.gradle文件中的依赖项信息。 发展历程 源代码托管在。 在上报告问题/功能请求。 在Twitter 上关注我们。 我们还对环聊。 关于补丁/请求请求的注释 分叉该项目。 进行功能补充或错误修复。 为此添加测试。 这很重要,因此我不会在以后的版本中无意间破坏它。 必要时添加文档。 提交,请勿更改procfile,版本或历史记录。 发送拉取请求。 主题分支的奖励积分。 版权 版权所有(c)2017 Andrew Nesbitt。 有关详细信息,请参见。 立即下载

相关推荐

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

gradle 读取本地json文件

想要实现的效果是通过gradle来读取本地的config.json文件并返回JsonObject对象。因为gradle使用的是Groovy语言。而Groovy又完全兼容Java,所以使用gradle读取本地文件的思路就是利用Java语言实现对文件的操作。读取文件的代码 完整的build.gradle里面增加的有详细注释。 要读取的config.json文件 重新build项目就可以看到build任务栏打印的config.json信息 通过此方式可以很好的解决项目中针对不同客户有不同的配置的需求。

欢迎来到“無昂博奥”的博客 2877

RT-Thread新手必看:FMT飞控移植中的5个常见坑及解决方案

本文针对RT-Thread新手在移植FMT开源飞控时遇到的5大核心挑战,提供了深度解决方案。内容涵盖SCons构建系统配置、RT-Thread版本API兼容性处理、BSP与设备驱动适配、TOML系统配置解析以及算法模块集成调试,帮助开发者高效避坑,成功完成飞控移植。

gin88的博客 250

【开发环境】IntelliJ IDEA 中的 Gradle 工程处理 JSON 字符串

一、创建 Gradle 工程 二、导入 org.json:json 依赖 三、处理 JSON 字符串

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

S7-1200五轴伺服系统PLC控制方案与调试技巧

工业自动化领域中,多轴伺服控制是实现精密加工的核心技术。基于PROFINET实时通信协议和PLCopen运动控制标准,现代PLC(如西门子S7-1200)能够实现多轴高精度同步控制。其技术原理是通过等时同步模式确保各轴运动的时序一致性,结合PID调节和电子齿轮比实现位置闭环。这种方案在数控机床、3D打印等场景具有重要应用价值。本文以五轴联动系统为例,详细解析了S7-1200与V90伺服驱动器的硬件组态方案,包括PROFINET环网配置和IRT同步设置。在软件层面,重点介绍了基于TIA Portal的工艺对象

weixin_34332905的博客 415

1篇2章1节:在 Mac 上安装 Python,从环境检查到工具配置的完整指南

Python 是当今最流行的高级编程语言之一,广泛应用于数据分析、人工智能、自动化脚本和 Web 开发。虽然 macOS 曾自带 Python,但从 macOS 12.3 开始,系统不再默认提供可直接使用的版本,因此需要手动安装。本文将详细讲解如何在 Mac 上安装最新版本的 Python,如何验证安装是否成功,以及如何配置 IDLE 和 Python Launcher 等工具,为日常开发和学习打下坚实基础。即便你是完全的新手,也能按步骤完成环境搭建。

MD Code 848

Gradle学习 - json操作

1.将实体类转化成字符串,将字符串转化成实体类 2.访问网络解析json

辉哥的博客 2125

【文献笔记】CVPR 2023|Attention-Based Point Cloud Edge Sampling

优点能够有效采出点云数据的边缘点分类任务性能优越不足没有设计出一个更好的上采样方法,导致分割任务的性能略低只考虑了边缘特征,没有利用其他几何特征。

m0_55908255的博客 319

浅谈Jackson中@JsonProperty和@JsonAlias注解

浅谈Jackson中@JsonProperty和@JsonAlias注解 这篇文章我们将提供Jackson @JsonProperty和@JsonAlias注解的相关例子: @JsonProperty,@JsonAlias定义了一个用于Json序列化和反序列化的逻辑属性。 当我们将Json Data转化为Java Object时,我们称之为Json反序列化;而从Java Object得到JSON...

qq_16759541的博客 3万+

博途PLC S7-1200/1500 ModbusTcp通信SCL代码篇(轮询)

博途PLC MODBUS TCP的详细讲解和注意事项,可以参看下面这篇博文,这里不在赘述。这篇作为SCL代码篇主要给出SCL语言下的轮训写法和注意事项。博途PLC1200/1500PLC ModbusTcp通信(轮询处理)_RXXW_Dor的博客-优快云博客。............

RXXW_Dor的博客 8423

YOLOv11 模型改进全流程:从代码修改到性能跃升,让你打造专属检测利器

无论是科研中需要发表创新点满满的论文,还是企业里要解决特定场景的检测难题,这套方法都能让你在YOLOv11的基础上打造出“量身定制”的检测模型。别再让通用模型的“平庸性能”限制你的项目上限——现在就动手修改代码,让你的YOLOv11模型在精度、速度或小样本适应能力上实现跨越式提升,用技术突破证明你的AI研发实力!本文将带你从代码层面入手,完成从骨干网络到损失函数的全维度改进,真正掌握让YOLOv11“为你所用”的技术实力。该改进对小样本类别(如数据集中仅占5%的“稀有缺陷”)的识别精度提升显著。

m0_71589036的博客 402

Gradle读取package.json

ReactNative项目中,ReactNative版本配置在package.json文件中,另外Android的build.gradle中也需要配置相应的版本。 所以能不能只配置一处呢?方法就是gralde中读取package.json的react-native的版本号。代码如下: String reactVersion def jsonFile = file('../package.jso...

100斤的博客 2450

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4617

Gradle笔记——构建基础

本篇文章主要介绍一下Gradle的构建基础。它看起来似乎和android项目没多大关系,不能让人一下子理解android项目中的Gradle配置文件,但是这篇基础真的很重要。 学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识。这里有一个Groovy的简明中文教程文档,可以快速学习Groovy的一些语法:http://download

一个码农的博客 5万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Gradle 构建基础

Gradle 是一个基于 Groovy 或 Kotlin DSL(领域特定语言)的自动化构建工具,广泛用于Java项目,同时也支持多种其他语言和平台的构建。理解 Gradle 构建的基础知识,包括构建脚本、任务、依赖管理和多项目构建,对于高效使用 Gradle 至关重要。

qq_33240556的博客 589

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Gradle】Gradle构建脚本基础

Gradle构建脚本基础 Settings文件 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置。设置文件的默认名为settings.gradle,放在根工程目录下。 设置文件大多数的作用都是为了配置子工程。根工程相当于Android Studio中的Project,一个根工程可以有很多子工程。 一个子工程只有在Settings文件里配置了Gradle才会识别,才会在构建...

weixin_30733003的博客 188

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Gradle构建脚本基础配置详解

通过了解Gradle构建脚本的基础配置步骤和注意事项,我们可以更好地使用Gradle构建工具来提高开发效率和构建质量。在实际开发过程中,我们应根据项目需求和实际情况,灵活配置Gradle构建脚本,以满足项目的特定需求。本文将针对标题[技术总结:Gradle构建脚本基础配置详解]进行深入探讨,从以下几个方面介绍Gradle构建脚本的基础配置。build.gradle是Gradle脚本的核心文件,它包含了构建项目的配置信息。此外,我们还可以在build.gradle文件中添加其他配置项,以满足项目特定的需求。

qq_35974860的博客 88

Gradle构建基础

本篇文章主要介绍一下Gradle的构建基础。它看起来似乎和android项目没多大关系,不能让人一下子理解android项目中的Gradle配置文件,但是这篇基础真的很重要。 学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识。这里有一个Groovy的简明中文教程文档,可以快速学习Groovy的一些语法:http://downlo

章志强的专栏 496

Gradle | Gradle构建之Gradle构建基础

Gradle是一个专注于构建自动化和支持多语言开发的构建工具。如果你在任何平台上构建、测试、发布和部署软件,Gradle提供了一个灵活的模型,可以支持从编译和打包代码到发布web站点的整个开发周期。Gradle被设计成支持跨多种语言和平台的构建自动化,包括Java、Scala、Android、C/C++和Groovy,并与开发工具和持续集成服务紧密地集成,包括Eclipse、IntelliJ和Jenkins。使用

cyc的专栏 2019

从头开始学gradle【Gradle 构建基础】

构建基础 Project 和 task:projects 和 tasks是 Gradle 中最重要的两个概念。 任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。 这完全取决于你要构建些什么。举个例子,每个 project 或许是一个 jar 包或者一个 web 应用,它也可以是一个由许多其他项目中产生的 jar 构成...

171

Gradle 构建脚本基础

Project和Tasks 在Gradle中可以有很多的Project,其实每一个Project都是在你的业务范围内,被你抽象出来的一个独立的模块,你可以根据项目的情况进行抽象分类,最后一个个的Project组成了整个Gradle的构建 每个Project由多个Task组成,Task就是一个原子性的操作 Setting文件 在Gradle中定义了一个设置文件,用于初始化工程树配置,该文件默认名为S...

R.先森的博客 740

Gradle理论与实践三:Gradle构建脚本基础

文章目录Gradle构建脚本基础1、创建一个task2、创建Task的几种方式3、Task内部执行顺序4、Task任务依赖5、自定义属性 Gradle构建脚本基础 Project:根据业务抽取出来的一个个独立的模块 Task:一个操作,一个原子性操作。比如上传一个jar到maven中心库等 Setting.gradle文件:初始化及整个工程的配置入口 build.gradle文件:...

小马快跑的博客 2897

Gradle构建脚本基础学习,Groovy语言基础。

命令行操作:./gradlew wrapper --gradle-version 想要的版本号。闭包(函数表达式):开放匿名的代码块,可以接受参数,具有返回值也可以被分配给变量。定义:Gradle它使用一种基于Groovy的特定领域语言来声明项目设置。或者直接修改工程目录下的gradle-wrapper.properties。初始化阶段- root project。settings.gradle中测试。编译资源,编译代码,apk签名。配置阶段- project。执行阶段- task。

weixin_46039528的博客 1315
上一篇: Groovy基础
下一篇: Gradle Task
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值