前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10--Gradle进阶 - Gradle任务的执行

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

作者头像
Devops海洋的渔夫
发布2023-09-01 08:54:13
3380
发布2023-09-01 08:54:13
举报
文章被收录于专栏:Devops专栏

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.4gradle 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 中所有操作都是基于任务完成的。

img

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

相关解释:

img

操作示例

1. 常见的任务
1.1 gradle build: 构建项目:编译、测试、打包等操作

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

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

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

代码语言:javascript
复制
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 插件,如下:

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

并且定义启动类:

代码语言:javascript
复制
plugins {
    id 'java'
    id 'application'
}

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

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

执行如下:

代码语言:javascript
复制
gradle run
2. 项目报告相关任务
2.1 gradle projects : 列出所选项目及子项目列表,以层次结构的形式显示
2.2 gradle tasks: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务

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

设置 task 任务分组:

代码语言:javascript
复制
// 任务的依赖方式
// 方式一:参数方式依赖
task A {
    // 设置任务分组
    group('abc')

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

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

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

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

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

代码语言:javascript
复制
gradle tasks --group="abc"
2.5 gradle help --task someTask :显示某个任务的详细信息

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

代码语言:javascript
复制
gradle help --task B
2. 6 gradle dependencies :查看整个项目的依赖信息,以依赖树的方式显示
代码语言:javascript
复制
gradle dependencies
2.7 gradle properties 列出所选项目的属性列表
代码语言:javascript
复制
gradle properties
3.性能选项

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

代码语言:javascript
复制
# 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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 10--Gradle进阶 - Gradle任务的执行
    • 前言
      • 任务执行
        • 操作示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档