Gradle学习之第一步入门操作

跨模型的 API 调用与集成:使用 Spring AI 构建可移植的 API 代码,支持多个 AI 模型(如 OpenAI、Anthropic 等)的调用 Spring AI 是 Spring 生态系统中的一部分,旨在提供一种简单、可扩展的方式来集成人工智能模型。Spring AI 使得开发者可以使用现有的 Spring 体系结构方便地访问多种 AI 模型和服务,例如 OpenAI、Anthropic、HuggingFace 等。 阅读详情
请通过以下方式下载本系列文章的Github示例代码:
git clone https://github.com/davenkin/gradle-learning.git
 
 
和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Task和Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构建周期。更多有关Maven的知识,读者可以访问Maven官网,或者可以参考笔者写的Maven学习系列文章。
 
现在我们都在谈领域驱动设计,Gradle本身的领域对象主要有Project和Task。Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,一个Task可以读取和设置Project的Property以完成特定的操作。
让我们来看一个最简单的Task,创建一个build.gradle文件,内容如下:
 
task helloWorld << {   
  println "Hello World!"
}
 
这里的“<<”表示向helloWorld中加入执行代码——其实就是groovy代码。Gradle向我们提供了一整套DSL,所以在很多时候我们写的代码似乎已经脱离了groovy,但是在底层依然是执行的groovy。比如上面的task关键字,其实就是一个groovy中的方法,而大括号之间的内容则表示传递给task()方法的一个闭包。除了“<<”之外,我们还很多种方式可以定义一个Task,我们将在本系列后续的文章中讲到。
在与build.gradle相同的目录下执行:
 
gradle helloWorld
 
命令行输出如下:
 
:helloWorld
Hello World!
BUILD SUCCESSFUL
Total time: 2.544 secs
 
 
在默认情况下,Gradle将当前目录下的build.gradle文件作为项目的构建文件。在上面的例子中,我们创建了一个名为helloWorld的Task,在执行gradle命令时,我们指定执行这个helloWorld Task。这里的helloWorld是一个DefaultTask类型的对象,这也是定义一个Task时的默认类型,当然我们也可以显式地声明Task的类型,甚至可以自定义一个Task类型(我们将在本系列的后续文章中讲到)。
比如,我们可以定义一个用于文件拷贝的Task:
 
task copyFile(type: Copy) {   
  from 'xml'   
  into 'destination'
}
 
 
以上copyFile将xml文件夹中的所有内容拷贝到destination文件夹中。这里的两个文件夹都是相对于当前Project而言的,即build.gradle文件所在的目录。
Task之间可以存在依赖关系,比如taskA依赖于taskB,那么在执行taskA时,Gradle会先执行taskB,然后再执行taskA。声明Task依赖关系的一种方式是在定义一个Task的时候:
 
task taskA(dependsOn: taskB) {   
  //do something
}
 
 
Gradle在默认情况下为我们提供了几个常用的Task,比如查看Project的Properties、显示当前Project中定义的所有Task等。可以通过一下命令查看Project中所有的Task:
 
gradle tasks
 
 
输出如下:
:tasks
 
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
 
Build Setup tasks
-----------------
setupBuild - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]
 
Help tasks
----------
dependencies - Displays all dependencies declared in root project 'gradle-blog'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-blog'.
help - Displays a help message
projects - Displays the sub-projects of root project 'gradle-blog'.
properties - Displays the properties of root project 'gradle-blog'.
tasks - Displays the tasks runnable from root project 'gradle-blog'.
 
Other tasks
-----------
copyFile
helloWorld
 
To see all tasks and more detail, run with --all.
 
BUILD SUCCESSFUL
 
Total time: 2.845 secs
 
 
可以看到,除了我们自己定义的copyFile和helloWorld之外,Gradle还默认为我们提供了dependencies、projects和properties等Task。dependencies用于显示Project的依赖信息,projects用于显示所有Project,包括根Project和子Project,而properties则用于显示一个Project所包含的所有Property。
在默认情况下,Gradle已经为Project添加了很多Property,我们可以调用以下命令进行查看:
 
gradle properties
 
输出如下:
 
:properties
 
------------------------------------------------------------
Root project
------------------------------------------------------------
 
allprojects: [root project 'gradle-blog']
ant: org.gradle.api.internal.project.DefaultAntBuilder@1342097
 
buildDir: /home/davenkin/Desktop/gradle-blog/build
buildFile: /home/davenkin/Desktop/gradle-blog/build.gradle
...
configurations: []
convention: org.gradle.api.internal.plugins.DefaultConvention@11492ed
copyFile: task ':copyFile'
...
ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@1b5d53a
extensions: org.gradle.api.internal.plugins.DefaultConvention@11492ed
...
helloWorld: task ':helloWorld'
...
plugins: [org.gradle.api.plugins.HelpTasksPlugin@7359f7]
project: root project 'gradle-blog'
...
properties: {...}
repositories: []
 
tasks: [task ':copyFile', task ':helloWorld']
version: unspecified
 
BUILD SUCCESSFUL
 
Total time: 2.667 secs
 
在以上Property中,allprojects表示所有的Project,这里只包含一个根Project,在多项目构建中,它将包含多个Project;buildDir表示构建结果的输出目录;我们自己定义的helloWorld和copyFile也成为了Project中的Property。另外,Project还包括用于执行Ant命令的DefaultAntBuilder(Property名为ant)和Project的描述属性description。
TMS_WebGMaps_1.9.8.0_Full_Source TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder 立即下载

相关推荐

【读代码】TradingAgents:基于多智能体LLM的金融交易框架深度解析

TradingAgents是由Tauric Research团队开源的创新型金融交易框架,其核心思想是通过多智能体协作系统模拟专业交易机构的决策流程。项目采用模块化设计,整合了LLM、实时数据分析、风险控制等组件,实现了从市场分析到交易执行的完整闭环。

kakaZhui的博客 2004

Gradle学习系列之一——Gradle快速入门

和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构

Capricornlg的专栏 1013

从Cartographer3D到LIO-SAM:主流3D激光SLAM算法怎么选?一份给机器人工程师的实战避坑指南

本文深入探讨了从Cartographer3D到LIO-SAM等主流3D激光SLAM算法的选型策略,为机器人工程师提供实战避坑指南。通过对比不同算法在传感器配置、环境特性和计算资源等方面的表现,帮助开发者根据项目需求选择最优方案,并分享传感器标定、资源优化等实用技巧。

weixin_27310985的博客 154

AS右侧的Gradle一栏只有Dependencies,不显示其他Tasks

错误 原因 解决 AS右侧的Gradle一栏只有Dependencies,不显示其他Tasks 一定是Android Studio里的关于gradle的某个配置出了问题。 那么就在偏好设置里搜索gradle,逐项查找gradle的各种配置,看看是哪一个出了问题。 在Experimental里取消勾选即可。 ...

AndroidTalk的博客 1523

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间

scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。

2401_84140653的博客 1201

[内网基础] 内网基础知识 —— Windows 工作组

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,如果不对这些计算机进行分组,网络的混乱程度是可想而知的。Windows 为了解决这一问题,就产生了工作组(Work Group)这个概念。Windows 工作组尝试将不通的计算机按功能(或部门)分别列入不同的工作组,例如技术部的计算机都列入 “技术部” 工作组、行政部的计算机都列入 “行政部” 工作组。要想访问某个部门的资源,只要在 “网络” 里双击该部门的工作组名,就可以看到该部门里的所有计算机了。

Blue17 の 小窝 1604

【Gradle日常问题】java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/DefaultConvention

一、问题描述 开发环境是MAC,gradle是从网上下载的包https://services.gradle.org/distributions/,springboot项目是https://start.spring.io/下载的 从SpringBoot的https://start.spring.io/下载下来的最新版2.4.4,使用idea构建gradle项目失败,最开始报错:java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/D

后端研发工程师Marion的博客 6919

基于Simscape的双PID比例调速阀与比例溢流阀液压控制系统建模与仿真

本文提出了一种基于Simscape的双PID液压控制系统建模方法,通过比例调速阀和比例溢流阀实现液压缸速度与压力的解耦控制。系统采用Simscape Fluids物理建模,精确模拟液压元件非线性特性。文章详细介绍了液压被控对象建模过程,包括动力单元、比例阀组合建模、执行机构及传感器配置。同时设计了双PID控制器架构,分别控制速度环和压力环,并给出参数整定建议。该方法通过物理网络直接模拟流体流动和压力动态,相比传统传递函数法具有更高精度,为液压系统仿真提供了有效解决方案。

AI的内部世界的博客 284

spring源码分析环境搭建

直入正题!! 1、下载spring的原码。 GitHub地址:GitHub - spring-projects/spring-framework: Spring Frameworkhttps://github.com/spring-projects/spring-framework 码云地址:https://gitee.com/MrZdp369/spring-frameworkhttps://gitee.com/MrZdp369/spring-framework 注意:码云地址是别人从GitHub拉

lujiangui的专栏 641

双目深度相机--10.双目视觉的主要步骤讲解分析

双目视觉技术通过模拟人眼原理,利用两个相机从不同视角采集图像,实现三维坐标计算。其核心流程包括:1)系统标定,消除相机畸变并建立坐标映射关系;2)图像同步采集与预处理;3)立体匹配,寻找左右图像对应点;4)基于视差图的深度计算;5)三维重建生成点云或网格模型;6)结果应用如目标测距、三维建模等。关键技术难点在于精确标定和准确匹配,这两步直接影响最终深度计算的精度。该技术广泛应用于自动驾驶、工业检测、VR等领域,实现了从二维图像到三维空间的精准转换。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 625

华为OD机试真题2025双机位C卷 Python&JS 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 403

Cause: org/gradle/api/internal/plugins/DefaultConvention

从spring下载了一个springboot初始化项目,gradle-wrapper.properties 中使用了 gradle 6.4(如下) distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipSt

qq_30346413的博客 1万+

RK3588 部署 YOLOv5s 实战:多线程加速从 16FPS 飙升到 120FPS(含性能优化)

因为RK3588包含了3个NPU核心,支持3个核心同时工作、双核合作、以及单核工作。我们可以使用线程池来加速。线程池是一种长街的并发编程模型,它用于管理和复用线程,以提高多线程程序的性能和效率。线程池通常包含以下主要组件:1、任务队列:任务队列用于存储待执行的任务。这些任务可以是函数、方法或其他需要多线程环境中执行的操作。2、线程池管理:线程池管理器负责创建、销毁和管理线程。它会监视任务队列中的任务,根据需要创建线程,执行任务,并在任务完成后将线程放回池中以供重用。

FJN110的博客 100

Gradle 学习 ----Gradle 入门

Gradle是一款Google推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml文件,转而使用简洁的、支持多种语言(例如java、groovy等)的build脚本文件。官网地址https目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了。作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的。...............

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 5万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

gradle快速入门

Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的build 脚本文件。官网地址:Gradle Wrapper 实际上就是对Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的Gradle问题。1.对方电脑没有安装gradle2.对方电脑安装过gradle,但是版本太旧了。

weixin_45829957的博客 6849

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Gradle快速入门学习

官网地址:Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 等多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件。目前市面上常见的项目构建工具还有Ant、Maven。

huangjhai的博客 1510

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Gradle入门初探

我们都创建过基于Maven的项目,maven可以很好的管理项目的依赖,编译和打包项目,Gradle是一个和Maven类似的自动化构建工具,Maven是基于xml文件格式,而Gradle是基于Groovy的语言,这使Groovy的构建脚本更加的灵活并且易于编写。在性能上,Gradle也引入了增量构建以及一些缓存机制,也要比maven构建速度更快,总之,Gradle的优点要比maven多,作为继maven之后的新一代的构建工具,如果我们要创建新的项目,不妨使用Gradle尝试下。

zhangyifang_009的博客 3183

Gradle 入门第一步,基础环境搭建(Windows)

Gradle 零基础入门内容,含 Windows 下 JDK 检查、Gradle 下载配置与缓存优化,还教用 IDEA 创建 Gradle Java 项目、配置环境并运行程序,帮新手快速上手。

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 1292

Gradle理论与实践一:Gradle入门

文章目录Gradle入门1、配置Gradle环境2、Gradle之Hello World3、gradle 与gradlew的区别4、Gradle命令介绍5、Gradle 工作流程 Gradle入门 Gradle一门DSL(Domain Specific Language,领域特定语言),Gradle基于Groovy语言,专门用来解决自动化构建。Gradle可以认为是一个框架,负责定义流程和规则。而...

小马快跑的博客 4332

Android Gradle和Gradle插件区别

引言 什么是Gradle?什么是Gradle插件? build.gradle中依赖的classpath 'com.android.tools.build:gradle:2.1.2'和gradle-wrapper.properties中的distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip有什

jinrall的专栏 1万+

Gradle 学习总结(1)—— Gradle 入门详解

前言网上关于Gradle的教程很多,但很多都是以“面”切入— 通过大量讲解其用法及其API分类来阐述。但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀。个人深信,技术之道与练功之道是一致的,"想要旷世武功,先练内功"。本文尝试以“点”切入,阐述一下学习Gradle的门路。为什么使用Gradle所谓构建,简单来说就是根据不同的输入信息,执行不同的任务,得到不同的输出的过程。而构建

科技D人生 8114

2024最新 Gradle 入门教程

在现代软件开发中,Gradle 是一款不可忽视的项目构建工具。凭借其快速、灵活与可扩展性,它成为了 Java 开发人员、DevOps 工程师的最佳选择。本教程详细介绍了 Gradle 的安装流程、项目结构、常用命令及如何创建和构建第一个项目。无论你是 Gradle 小白还是构建工具老手,都能在此找到学习与优化 Gradle 使用的方法。通过这份指南,我们将助你快速掌握 Gradle,轻松应对 2024 年开发的构建需求。Gradle 是一款开源的自动化构建工具。多语言支持。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 6013

Gradle学习之一入门介绍

文章目录第一章 课程导学第二章 快速入门2.1 概述2.2 特定语言DSL2.3 groovy初探第三章 开发环境搭建3.1 mac 安装3.1.1 下载Groovy SDK3.2 idea配置 第一章 课程导学 gradle的功能强大,maven和ant可以做的,它也可做。并且它使用SDL语言,是的配置更加灵活。掌握gradle: 可以完善Android和Java技术体系 提供自动化构建技术深度 全语言全平台的自动化构建工具 主要内容 Gradle开发环境的搭建 核心语法讲解和实战 字符串、.

C安君的博客 1168

Gradle入门学习

1.Gradle是什么? Gradle也是一个构建工具,类似maven,ant,也是apache旗下的。那与maven构建相比有什么好处,maven构建的坐标信息定义在xml中,如果依赖非常多,xml文件会非常臃肿。而Gradle基于Groovy脚本语言,编写依赖等信息非常简洁。 2.Gradle安装 下载地址:点我 按需下载对应版本,我这里下载的是 解压文件即可,然后配置环境变量输入 grad...

中森明菜的博客 314

Gradle学习教程

Gradle学习教程一、Gradle是什么二、为什么要Gradle三、如何安装Gradle四、核心概念基础五、Gradle构建的生命周期初始化阶段配置阶段执行阶段六、任务-(简单任务学习)6.1 任务的简单定义6.2 任务的行为6.3 任务的依赖6.4 动态任务6.5 为任务定义属性6.6 提取任务的公用方法6.7 默认任务6.8 任务的生命周期钩子6.9 引用外部依赖的功能,供脚本使用七、任务...

KimZing的博客 3923

一、Gradle入门

Gradle入门

希望有点用 1323
上一篇: Android开发之 shape的使用
下一篇: Gradle学习之第二步创建Task
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值