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

FunASR语音识别服务在Win11上的Docker部署避坑指南:模型配置与热词优化 本文详细介绍了在Windows 11系统上通过Docker部署FunASR语音识别服务的完整流程,包括环境准备、模型配置、热词优化及常见问题解决方案。特别针对Win11环境下的特殊配置和性能调优提供了实用指南,帮助开发者高效搭建高性能语音识别服务。 阅读详情
原文地址为: Gradle学习系列之一——Gradle快速入门

这是一个关于Gradle的学习系列,其中包含以下文章:

    1. Gradle快速入门
    2. 创建Task的多种方法
    3. 读懂Gradle语法
    4. 增量式构建
    5. 自定义Property
    6. 使用java Plugin
    7. 依赖管理
    8. 构建多个Project
    9. 自定义Task类型
    10. 自定义Plugin

 

  

  请通过以下方式下载本系列文章的Github示例代码:

git clone https://github.com/davenkin/gradle-learning.git

 


 

  和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是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。

 

  在下一篇文章中,我们将讲到创建Task的多种方法。

 

 


转载请注明本文地址: Gradle学习系列之一——Gradle快速入门
【主题建模】一种基于深度学习的主题建模方法:BERTopic(理论篇) 在我的博客中已经写了很多关于主题建模的内容,当你准备了解 BERTopic 时,默认你已经知道了 LSA、pLSA、NFM、LDA 等传统的主题建模方法。关于主题建模的前置知识我在这里不做赘述,感兴趣的同学可以看看我前几篇博客。学习 BERTopic 需要一定的机器学习基础,让我们一起开始吧! 阅读详情

相关推荐

Windows Vista Sidebar Gadget开发手册

边栏小工具是置于计算机操作系统边栏区域的便捷应用程序,旨在提供快速访问和执行特定功能的途径。它们通常具有轻量级特性,专注于完成一个或几个特定任务,并拥有简洁直观的用户界面。在现代网页设计中,HTML和CSS是构建网页骨架和美化视觉表现的核心技术。合理的布局能够提高用户体验,而精心设计的样式能够增强页面的吸引力。本章将深入探讨HTML布局技巧和CSS样式的设计与实现,确保边栏小工具不仅功能完善,还具有直观而优雅的界面。

weixin_36078669的博客 1042

gradle的依赖分析

执行命令 gradle dependencyInsight --dependency 依赖包 例如 gradle dependencyInsight --dependency kafka_2.10

xyw10000 3254

Windows 7 Sidebar Gadget Collection

Windows Sidebar 是一个集成在Windows Vista及以后版本中的小工具平台,用户可以在侧边栏上添加各种小工具以显示系统信息、天气预报、日历等实用功能。其设计理念是为用户提供一个便捷的方式来获取重要信息,同时不干扰用户的主要工作。虽然在Windows 7之后的版本中,Sidebar已经不再是系统的默认组件,但它曾极大地丰富了Windows用户的桌面体验。通过第三方工具,用户仍可以实现类似的桌面小工具功能,继续享受个性化的桌面环境。

weixin_31641077的博客 1055

【idea实用系列1】 Gradle 构建任务常见命令详解

IDEA Gradle 构建任务常见命令详解

wang2leee的博客 3427

使用 Gradle 命令了解项目构建信息

不管是接触一个新项目,还是一直开发老项目,使用 Gradle 命令,可以对项目构建信息有一个快速的掌握。要分析项目 aar 或 jar 依赖信息,可以使用 Task :app:dependencies或./gradlew :app:dependencyInsight --configuration someConf --dependency someDep ;要分析项目 so 依赖信息,可以监听 Task :app:mergeDebugNativeLibs。依赖信息对于解决依赖冲突,库升级问题非常有帮助。另

wangjiang 1546

gradle依赖分析

在使用gradle时,遇到jar包冲突,要分析引入的某个jar是怎么引入的,可以使用如下命令: gradlew dependencyInsight --dependency jackson-core

chuixue24的博客 1764

[转]Sidebar Gadget开发教程(1)

本文转载自:“开心就好的代码人生” 翻译了两篇Sidebar Gadget的文章后,决定自己写一个教程,与准备投身于Sidebar Gadget开发的劳苦大众们分享一下经验。也当作自己个人学习Gadget开发的一些总结,使自己可以学习得深入一些。欢迎大家就这一系列文章提出批评斧正。本部分准备介绍一些基础知识。 关于SideBar SideBar是Windows Vista特有的一...

anmi5580的博客 167

Sidebar Gadget开发教程(1)

本文转载自:“开心就好的代码人生”翻译了两篇Sidebar Gadget的文章后,决定自己写一个教程,与准备投身于Sidebar Gadget开发的劳苦大众们分享一下经验。也当作自己个人学习Gadget开发的一些总结,使自己可以学习得深入一些。欢迎大家就这一系列文章提出批评斧正。本部分准备介绍一些基础知识。关于SideBarSideBar是Windows Vista特有的一个显示

activity8810的专栏 1万+

Vista Sidebar Gadget (侧边栏小工具)开发教程 (1)

Vista Sidebar Gadget (侧边栏小工具)开发教程 (1) 源自-开心就好  2006年11月 翻译了两篇Sidebar Gadget的文章后,决定自己写一个教程,与准备投身于Sidebar Gadget开发的劳苦大众们分享一下经验。也当作自己个人学习Gadget开发的一些总结,使自己可以学习得深入一些。欢迎大家就这一系列文章提出批评斧正。本部分准备介绍一...

博客 121

Sidebar Gadget开发教程(2)

本文转载自:“开心就好的代码人生”由于近期在努力学习Sidebar Gadget开发技术,并且也与中国汽车网合作做了一个Sidebar Gadget,所以耽误了一些时间,但同时,也通过这个机会加深了学习印象。很多朋友在学习新技术的时候,都喜欢做Hello World。我原来也是这种情况。其实我认为这种方式有百害而无一利,就类似于学英语开始背单词一样,背了十多年,还没有背到F开头的单

activity8810的专栏 4046

107页PPT!数字化转型企业架构设计战略方案:总体架构、业务架构(BA)、应用架构(AA)、数据架构(IA)、技术架构(TA).pptx

107页PPT!数字化转型企业架构设计战略方案:总体架构、业务架构(BA)、应用架构(AA)、数据架构(IA)、技术架构(TA).pptx

上一篇: Matlab 线性拟合 & 非线性拟合
下一篇: eclipse jee配置jetty的两种方法
wangchaoqi1985
博客等级 码龄8年 440粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值