10--Gradle进阶 - Gradle任务的执行

news2024/11/15 15:55:30

10--Gradle进阶 - Gradle任务的执行

前言

在前面的篇章中,我们尝试执行了 gradle 的 task,但是不清楚有哪些语法,下面来介绍一下。

任务执行

任务执行语法:gradle [taskName...] [--option-name...]。

分类解释
常见的任务(*)gradle build: 构建项目:编译、测试、打包等操作
gradle run :运行一个服务,需要application 插件支持,并且指定了主启动类才能运行
gradle clean: 清除当前项目的 build 目录
gradle init : 初始化 gradle 项目使用
gradle wrapper:生成wrapper 文件夹的。
gradle wrapper 升级wrapper 版本号:gradle wrapper --gradle-version=4.4
gradle wrapper --gradle-version 5.2.1 --distribution-type all :关联源码用
项目报告相关任务gradle projects : 列出所选项目及子项目列表,以层次结构的形式显示
gradle tasks: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务。
gradle tasks --all :列出所选项目的所有任务。
gradle tasks --group="build setup":列出所选项目中指定分组中的任务。
gradle help --task someTask :显示某个任务的详细信息
gradle dependencies :查看整个项目的依赖信息,以依赖树的方式显示
gradle properties 列出所选项目的属性列表
调试相关选项-h,--help: 查看帮助信息
-v, --version:打印 Gradle、 Groovy、 Ant、 JVM 和操作系统版本信息。
-S, --full-stacktrace:打印出所有异常的完整(非常详细)堆栈跟踪信息。
-s,--stacktrace: 打印出用户异常的堆栈跟踪(例如编译错误)。
-Dorg.gradle.daemon.debug=true: 调试 Gradle  守护进程。
-Dorg.gradle.debug=true:调试 Gradle 客户端(非 daemon)进程。
-Dorg.gradle.debug.port=(port number):指定启用调试时要侦听的端口号。默认值为 5005。
性能选项:【备注: 在gradle.properties 中指定这些选项中的许多选项,因此不需要命令行标志】--build-cache, --no-build-cache:尝试重用先前版本的输出。默认关闭(off)。
--max-workers: 设置 Gradle 可以使用的woker 数。默认值是处理器数。
-parallel, --no-parallel: 并行执行项目。有关此选项的限制,请参阅并行项目执行。默认设置为关闭(off)
守护进程选项--daemon, --no-daemon:  使用 Gradle 守护进程运行构建。默认是on
--foreground:在前台进程中启动 Gradle  守护进程。
-Dorg.gradle.daemon.idletimeout=(number of milliseconds):Gradle Daemon 将在这个空闲时间的毫秒数之后停止自己。默认值为 10800000(3 小时)。
日志选项-Dorg.gradle.logging.level=(quiet,warn,lifecycle,info,debug):
通过 Gradle 属性设置日志记录级别。
-q, --quiet: 只能记录错误信息
-w, --warn: 设置日志级别为
warn-i, --info: 将日志级别设置为 info
-d, --debug:登录调试模式(包括正常的堆栈跟踪)
其它(*)-x:-x 等价于: --exclude-task : 常见gradle -x test clean build
--rerun-tasks: 强制执行任务,忽略up-to-date ,常见gradle build --rerun-tasks
--continue: 忽略前面失败的任务,继续执行,而不是在遇到第一个失败时立即停止执行。每个遇到的故障都将在构建结束时报告,常见:gradle build --continue。gradle init --type pom :将maven 项目转换为gradle 项目(根目录执行)
gradle [taskName] :执行自定义任务
...

更 详 细 请 参 考 官 方 文 档 : https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_executing_tasks

拓展:gradle  任务名是缩写:  任务名支持驼峰式命名风格的任务名缩写,如:connectTask  简写为:cT,执行任务 gradle cT。

拓展 1:前面提到的Gradle 指令本质:一个个的task[任务], Gradle 中所有操作都是基于任务完成的。

d44865cbb3d8e73e1368d58ca36b2621.jpeg
img

拓展 2:gradle 默认各指令之间相互的依赖关系:

相关解释:

65523896a3248a6cc9f0b529ac54e29f.jpeg

img

操作示例

1. 常见的任务

1.1 gradle build: 构建项目:编译、测试、打包等操作

gradle build 可以中终端执行,也可以在 Idea 工具类执行,如下:

0de1fd60c51da1909586ac078ba13559.png

1686099281110
1.2. gradle run :运行一个服务,需要application 插件支持,并且指定了主启动类才能运行

首先我们需要先准备一个工程的启动类:

097a83da31a9f5bc924d901df9b673f1.png

1686100840312
package com.lijw;

public class Application {
    public static void main(String[] args) {
        System.out.println("Hello world! root project");
    }
}

注意:需要先执行完 gradle build,编译好类,下面才可以执行。

在 root 工程的 build.gradle 设置 application 插件,如下:

d8b7c6ca0677d420af31b260188b1661.png

1686099435356

可以看到设置插件后,idea工具类也会增加 application 插件。

并且定义启动类:

d6e6649ceff5387e8b5c4b5129004280.png

1686100921435
plugins {
    id 'java'
    id 'application'
}

group 'com.lijw'
version '1.0-SNAPSHOT'

// 定义应用的主启动类
mainClassName = 'com.lijw.Application'

执行如下:

gradle run

95a3ec46a095e5f63ddbc1c8826450f2.png

1686100953616

2. 项目报告相关任务

2.1 gradle projects : 列出所选项目及子项目列表,以层次结构的形式显示

be4e9449a1fe31b619519c5a8f4f1446.png

1686101227861
2.2 gradle tasks: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务

c61c8c998bc16173c77f4f70a00679ce.png

1686101296314

可以看到这些 task 是有分组的,但是由于我们之前写的task A B 没有分组,所以没有显示。而在 Idea 工具类,则会显示在 other 的分组中。

34b316c88674192f1942524bc7a3ddcb.png

1686101471633

设置 task 任务分组:

50fcbc5da5bdff057604bcfda85aaeaa.png

1686102475557
// 任务的依赖方式
// 方式一:参数方式依赖
task A {
    // 设置任务分组
    group('abc')

    doLast {
        println "TaskA.."
    }
}
task 'B' {
    // 设置任务分组
    group('abc')

    doLast {
        println "TaskB.."
    }
}
//参数方式依赖: dependsOn后面用冒号
task 'C' {
    // 设置任务分组
    group('abc')
    
    doLast {
        println "TaskC.."
    }
}

再次执行查看 task 任务,如下:

81c5d2f4d708938479977088fa819e62.png

1686102537474
2.3 gradle tasks --all :列出所选项目的所有任务

fba40dd432bc17b6ac8ebfecb744c132.png

1686149339943
2.4 gradle tasks --group="build setup":列出所选项目中指定分组中的任务

我们来看看上面分组为 abc 的 task 如下:

gradle tasks --group="abc"

94d96f82bb1e5bbf3d89d1e603b4b941.png

1686149491451
2.5 gradle help --task someTask :显示某个任务的详细信息

下面来查看 task B 的详细信息,如下:

gradle help --task B

7f98e0d5be976fbaa7116369197d88e9.png

1686149601011
2. 6 gradle dependencies :查看整个项目的依赖信息,以依赖树的方式显示
gradle dependencies

ceea92ce9b5211157845e02eb153ef50.png

1686149703722
2.7 gradle properties 列出所选项目的属性列表
gradle properties

e10b2c833820aa1c1b082aa013e8796b.png

1686149838783

3.性能选项

可以在工程项目中创建 gradle.properties 配置一些全局的属性,如下:

644ef2f585ebd5e29b32d011cde43ee0.png

1686150839232
# gradle.properties 里面定义的属性是全局的,可以在各个模块的 build.gradle 里面直接引用
# 当有一些数据我们传到 git 又不想给别人看的时候,就可以配置到 gradle.properties,然后不传这个文件上去
# 也可以在项目中对一些属性进行统一配置,提供开发效率

# JVM堆内存大小
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=1280m -Dfile.encoding=UTF-8

# 开启守护进程,下一次构建的时候,将会使用这个守护进程构建,而不是重新 fork 一个 gradle 构建进程
org.gradle.daemon=true

# 按需加载
org.gradle.configureondemand=true

# 并行编译
org.gradle.parallel=true

# 开启gradle缓存
org.gradle.caching=true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

沉浸式三维虚拟展厅交互体验科技感十足

随着科技的不断发展进步,展厅的表现形式也变得多样化,紧跟时代发展步伐,迭代创新。 3D虚拟展厅具有四大优势 一、降低成本,提高效率 3D“VR线上展厅”将艺术优势资源转到线上搭建的艺术线上展平台,相对传统艺术展来说有…

ModaHub魔搭社区:详解向量数据库Milvus的Mishards:集群分片中间件(二)

目录 元数据 服务发现 元数据 元数据记录了底层数据的组织结构信息。在分布式系统中,Milvus 写节点是元数据唯一的生产者,而 Mishards 节点、Milvus 写节点和读节点都是元数据的消费者。目前版本的 Milvus 只支持 MySQL 和 SQLite 作为元数据的存储后…

SpringBoot整合网易邮箱

SpringBoot整合邮箱 1&#xff0c;开启POP3/SMTP/IMAP服务 注意&#xff1a;每个邮箱的密码唯一&#xff0c;不要随意分享给他人 最后就是这个样子了 2&#xff0c;整合测试 2.1&#xff0c;pom.xml <?xml version"1.0" encoding"UTF-8"?> <…

Just KNIME it [S2C13] 机器学习的可解释性

朋友们&#xff0c;Just KNIME it 还有在跟进吗? 本季已经到 13 期啦。 本期探讨的主题是机器学习的可解释性问题&#xff0c;快随指北君一起看看吧。 挑战 挑战13&#xff1a;揭示犯罪率之迷 难度&#xff1a;中等 情境描述&#xff1a;作为一名在房地产公司任职的数据科学家…

Apikit 自学日记:发起文档测试-HTTP

HTTP 功能入口&#xff1a;API管理应用 / 选中某个项目 / API文档菜单 / 选中某一API文档 / 点击“测试”TAB API文档测试页&#xff0c;可对该API文档描述的接口进行快速测试。API文档测试页分为地址控制栏、请求控制区、返回展示区&#xff0c;以及测试辅助工具区共四个部分…

Android进阶之路 - 深入浅出字体、字体库

当时组内临时接到一个换字体库的需求&#xff0c;这个需求相对简单&#xff0c;因为手头有其他事情&#xff0c;同时之前也没换过字体库&#xff0c;就交给了同事去做了&#xff1b;现在有时间就好好充实下自己 ( 我写的也未必全对&#xff0c;如有不足可直接提出&#xff0c;相…

vue 组件基本使用方法

前言:vue 可以比较灵活的使用 html的片段&#xff0c;并将html的片段进行数据隔离&#xff0c;参数也可以互相传递&#xff0c;组件与组件之间也可以进行数据的交互 合理的使用组件可以避免重复代码或者很方便的调用第三方组件库 vue组件 简单实例组件传参实际应用父子组件交互…

右键文件夹添加指定打开的程序(如:IDEA、PyCharm等)

一.打开注册表 使用winR打开运行界面(默认为左下角)输入regedit 二.进入指定目录 1.找不到可直接复制路径: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell 2.在当前路径shell下右键->新建->项->命名IDEA &#xff08;名字任意即可&#xff09;,修改默认…

利用影刀RPA批量导出excel中的图片并重命名

本程序要求excel中的图片应该符合以下截图中的格式&#xff1a; 图片和名称应该处于同一行&#xff0c;而且图片应该是嵌入在单元格中 程序参考&#xff1a;

linux系统Nginx服务Rewrite重写

文章目录 一、Rewrite跳转场景二、Rewrite跳转实现三、Rewrite实际场景1.Nginx跳转需求的实现方式2.rewrite放在 server{}、if{}、location{}段中3.对域名或参数字符串 四、Nginx正则表达式1.常用的正则表达式元字符2.正则表达式的优点 五、Rewrite命令1.Rewrite命令语法2.flag…

数字IC前端学习笔记:仲裁轮询(六)

相关文章 数字IC前端学习笔记&#xff1a;LSFR&#xff08;线性反馈移位寄存器&#xff09; 数字IC前端学习笔记&#xff1a;跨时钟域信号同步 数字IC前端学习笔记&#xff1a;信号同步和边沿检测 数字IC前端学习笔记&#xff1a;锁存器Latch的综合 数字IC前端学习笔记&am…

数据库学习3

主键使用 主键的使用 CREATE TABLE t17 (id INT PRIMARY KEY ,name VARCHAR(32), email VARCHAR(32)); 主键列的值不可以重复 INSERT INTO t17 VALUES(1,jack,jacksohu.com); INSERT INTO t17 VALUES(2,tom,tomsohu.com); INSERT INTO t17 VALUES(1,hsp,hspsohu.com); SELECT …

《计算机系统与网络安全》 第九章 访问控制技术

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

2022(二等奖)C859基于WebGIS的南京市排污口管理系统

作品介绍 一、需求分析 &#xff08;一&#xff09;社会需求 《国务院办公厅关于加强入河入海排污口监督管理工作的实施意见》明确提出&#xff0c;入河入海排污口(以下简称排污口&#xff09;是指直接或通过管道、沟、渠等排污通道向环境水体排放污水的口门&#xff0c;是流…

Day40

思维导图 练习 定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。例如&#xff0c;输入字符串为"Hello World"&#xff0c;输出结果为"olleH dlroW"&#xff0c;并在主函数…

Visual C++中的虚函数和纯虚函数的定义

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来说说Visual C中的虚函数和纯虚函数。 直接说虚函数和纯虚函数有很多人会直接晕&#xff0c;但是来看这篇帖子的很多人是有JAVA或其他面象对象编程基础的&#xff0c;我要不就先作个类比&#xff0c;究…

【Java面试题】Java基础——排序算法

文章目录 冒泡排序★★★算法步骤动图演示代码示例 选择排序算法步骤动图演示 插入排序算法步骤动图演示 快速排序算法步骤动图演示 冒泡排序★★★ 冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。 它重复的遍历过要排序的数列&#xff0c;一次比…

Debian 12 “bookworm” 正式发布

经过 1 年 9 个月零 28 天的开发&#xff0c;Debian 项目推出了其新的稳定版本 12&#xff08;代号 bookworm&#xff09;。 Debian 12 包含超过 11,089 个新软件包&#xff0c;总计 64,419 个软件包&#xff0c; 6,296 个软件包已作为过时包删除。此版本更新了 43,254 个软件…

threejs让模型始终面向相机

需求&#xff1a;threejs导入3D模型&#xff0c;改变相机位置的同时&#xff0c;让模型始终面向相机。 实现方式&#xff1a;使用模型的lookAt()方法&#xff0c;设置模型lookAt的值 首次加载模型时&#xff0c;面向相机 load.load(/model5.glb, g > {// 获取相机位置const…

浮点数不再神秘:JS浮点数精度详解

文章目录 I. 引言JS中什么是浮点数为什么精度会受到影响 II. 浮点数精度的问题浮点数精度丢失的例子JS中最常见的浮点数问题精度问题对计算的影响 III. 如何避免浮点数精度问题使用精度库避免精度错误的方法显示控制精度的方法 IV. 浮点数精度问题与前端开发前端开发中的浮点数…