第5章 Gradle控制台
目录
5.1、概述 5.2、命令行反馈 5.3、非交互式环境中的外观和感觉
5.1、概述
几乎每个Gradle用户都会在某些时候体验命令行界面。
Gradle的控制台输出优化了渲染性能和可用性,仅显示相关信息并提供视觉吸引人的反馈。
图5.1。Gradle命令行执行动态输出
5.2、命令行反馈
Gradle在构建运行时显示信息,因此您可以专注于最重要的兴趣项目。
Gradle控制台输出的每个部分帮助回答具体问题。
- 现在有什么我应该知道的关于我的构建, 例如测试失败并发出警告?
- 我的构建什么时候完成?
- Gradle现在在做什么?
- 还有其他有趣的结果,例如:已经跳过或更新的任务?
图5.2。构建Gradle命令行的输出部分
从Gradle 4.0开始,命令行控制台输出的数量已经减少了。 每个任务的开始和结束不再显示或任务的结果(例如UP-TO-DATE)。 只有在任务执行期间发出某些输出时,才会显示该任务的名称。 Gradle还将来自特定上下文的输出组合在一起,例如 来自编译任务,测试执行或分叉进程的所有警告。 分组输出对并行任务执行特别有用,因为它可以防止不清楚表示其起源的交错消息(参见 第26.8节“并行项目执行”)。 分组控制台输出和减少的控制台输出仅在交互式和丰富的控制台命令行中出现。 使用--console = plain的持续集成服务器和构建将会看到类似于Gradle 4.0之前的控制台输出。 以下控制台输出显示配置阶段和任务的分组输出:compileJava:
> Configure project ':library'
Configuring project version for project ':library'
> Configure project ':consumer'
Configuring project version for project ':consumer'
> Task :compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
在显示其输出之前,Gradle不等到工作单元完全完成。
Gradle在短时间内将输出冲洗到控制台,以确保尽快提供相关信息。
当并行构建时,长时间运行的任务的输出可以被其他任务分解。
控制台输出的每个块将清楚地指出它所属的任务。
> Task :compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
> Task :generateCode
Generating JAXB classed from XSD files.
> Task :compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
5.2.2。构建进度条
构建进度条可以让您快速了解构建是否会很快完成。
随着构建工作的进行,进度条将从左到右填充。
在任何给定的时间,构建进度条还呈现构建生命周期的当前阶段(参见
第22.1节“构建阶段”)以及构建过程中花费的总体时间。
图5.3。Gradle命令行的
构建进度条部分
以下示例显示了构建生命周期的初始化,配置和执行阶段的进度条:
<-------------> 0% INITIALIZING [2s]
<==-----------> 25% CONFIGURING [4s]
<=========----> 64% EXECUTING [17s]
5.2.3. 正在进行的工作显示
Gradle提供了在构建进度条下面直接执行的实际工作的细粒度视图。 每行表示可以并行执行工作的线程或进程 - 解析依赖关系,执行任务和运行测试。 如果可用的工作没有被使用,那么它被标记为空闲。 可用工作人员的数量默认为执行构建的机器上的处理器数。 图5.4。Gradle命令行工作正在进行中
仅对由Gradle核心支持的基于JVM的测试显示并行测试执行。
JUnit和TestNG。
Gradle的未来版本可能支持其他测试工具和框架。
控制台输出的以下部分显示了8个并发工作进程的正在进行的工作显示
<==========---> 77% EXECUTING [10s] > :codeQuality:classpathManifest > Resolve dependencies :codeQuality:runtimeClasspath > :ivy:classpathManifest > Resolve dependencies :ivy:runtimeClasspath > IDLE > :antlr:classpathManifest > Resolve dependencies :antlr:runtimeClasspath > :scala:compileJava > Resolve dependencies :scala:compileClasspath > :buildInit:classpathManifest > Resolve dependencies :buildInit:runtimeClasspath > :jacoco:classpathManifest > Resolve dependencies :jacoco:runtimeClasspath > IDLE5.2.4。构建结果 在构建结束时,Gradle将显示构建(成功或失败)的结果以及执行工作并避免工作的任务数。 构建结果还显示执行构建所需的总时间。 执行工作的任务数量提供了构建的过时或繁忙的指示。 图5.5。Gradle命令行的 构建进度条部分
以下构建结果代表了成功的构建和任务的数量,包括其状态:
BUILD SUCCESSFUL in 2m 10s
411 actionable tasks: 381 executed, 30 up-to-date
“可操作”任务是至少有一个动作的任务。
生命周期任务(如构建(也称为聚合任务))不声明任何操作,因此不可操作。
5.3、非交互式环境中的外观和感觉 默认情况下,Gradle尝试通过检测构建正在运行的控制台的类型来启用丰富的控制台输出。 这使得颜色和附加的控制台输出格式化。 非交互式环境下降到使用普通控制台输出。 纯输出格式不支持输出分组。 任务和结果始终打印为与Gradle 3.x版本一致。 默认情况下,从IDE(例如Buildship和IntelliJ)或Continuous Integration产品(例如Jenkins和TeamCity)执行的Gradle构建使用纯控制台输出。
下面的输出演示如何使用普通控制台:
:compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:processResources
:classes
:jar
:assemble
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL in 6s
11 actionable tasks: 6 executed, 5 up-to-date
原文:https://docs.gradle.org/current/userguide/console.html