常用命令和适用场景
构建任务选项
- ./gradlew build - 适用于构建整个项目并生成可执行文件。这是最常用的选项,用于构建项目的主要任务。
测试选项
- ./gradlew test - 适用于运行项目的单元测试。通过执行该命令,可以自动运行项目中的所有单元测试,并输出测试结果。
输出文件选项
- ./gradlew assemble - 适用于生成项目的输出文件,如jar或war文件。通过执行该命令,可以将项目编译成可部署的文件,以便在其他环境中运行。
任务管理选项
- ./gradlew tasks - 适用于查看项目中定义的可用任务列表。通过执行该命令,可以查看项目中所有可执行的任务,帮助了解项目的结构和功能。
依赖管理选项
- ./gradlew dependencies - 适用于查看项目的依赖关系。通过执行该命令,可以查看项目所依赖的外部库和模块,以及它们之间的关系。
项目安装和发布选项
- ./gradlew install - 适用于将项目安装到本地Maven或Ivy仓库。通过执行该命令,可以将项目的构建结果安装到本地仓库,以供其他项目使用。
- ./gradlew publish - 适用于将项目发布到远程Maven或Ivy仓库。通过执行该命令,可以将项目的构建结果发布到远程仓库,以供其他开发者使用。
IDE集成选项
- ./gradlew eclipse - 适用于生成Eclipse项目文件。通过执行该命令,可以生成适用于Eclipse IDE的项目配置文件。
- ./gradlew idea - 适用于生成IntelliJ IDEA项目文件。通过执行该命令,可以生成适用于IntelliJ IDEA IDE的项目配置文件。
Gradle Wrapper选项
- ./gradlew wrapper - 适用于生成或更新Gradle Wrapper文件。通过执行该命令,可以生成或更新项目中的Gradle Wrapper文件,以确保在不同环境中使用相同的Gradle版本。
其他选项
这些选项适用于特定的场景和需求:
- ./gradlew --stop - 当需要停止正在运行的Gradle守护进程时使用。
- ./gradlew --version - 当需要查看已安装的Gradle版本信息时使用。
- ./gradlew --info - 当需要查看详细的构建信息时使用。
- ./gradlew --debug - 当需要启用调试模式以进行调试时使用。
- ./gradlew --offline - 当需要离线模式,即不从远程仓库下载依赖项时使用。
- ./gradlew --no-daemon - 当需要禁用Gradle守护进程时使用。
- ./gradlew --configure-on-demand 当只需要配置需要的项目时使用,加快构建速度。
- ./gradlew --parallel - 当需要并行执行任务以提高构建速度时使用。
- ./gradlew --scan - 当需要启用构建扫描功能以收集构建分析信息时使用。
选项词典
选项 | 描述 |
---|---|
-?, -h, --help | 显示此帮助消息。 |
-a, --no-rebuild | 不重新构建项目依赖项。 |
-b, --build-file | 指定构建文件。[已弃用] |
--build-cache | 启用Gradle构建缓存。Gradle将尝试重用先前构建的输出。 |
-c, --settings-file | 指定设置文件。[已弃用] |
--configuration-cache | 启用配置缓存。Gradle将尝试重用先前构建的配置。 |
--configuration-cache-problems | 配置如何处理配置缓存中的问题(失败或警告)。默认为失败。 |
--configure-on-demand | 仅配置必要的项目。Gradle将尝试减少大型多项目构建的配置时间。 |
--console | 指定要生成的控制台输出类型。可选值为'plain'、'auto'(默认)、'rich'或'verbose'。 |
--continue | 在任务失败后继续执行任务。 |
-D, --system-prop | 设置JVM的系统属性(例如 -Dmyprop=myvalue)。 |
-d, --debug | 以调试模式记录日志(包括常规堆栈跟踪)。 |
--daemon | 使用Gradle守护进程运行构建。如果尚未运行,则启动守护进程。 |
--export-keys | 导出用于依赖验证的公钥。 |
-F, --dependency-verification | 配置依赖验证模式。可选值为'strict'、'lenient'或'off'。 |
--foreground | 在前台启动Gradle守护进程。 |
-g, --gradle-user-home | 指定Gradle用户主目录。默认为~/.gradle |
-I, --init-script | 指定初始化脚本。 |
-i, --info | 将日志级别设置为信息。 |
--include-build | 包括指定的构建在组合中。 |
-M, --write-verification-metadata | 为项目中使用的依赖项生成校验和(逗号分隔列表)。 |
-m, --dry-run | 运行构建,但禁用所有任务操作。 |
--max-workers | 配置Gradle允许使用的并发工作程序数量。 |
--no-build-cache | 禁用Gradle构建缓存。 |
--no-configuration-cache | 禁用配置缓存。 |
--no-configure-on-demand | 禁用按需配置。 |
--no-continue | 在任务失败后停止执行任务。 |
--no-daemon | 不使用Gradle守护进程运行构建。如果已经通过默认配置始终使用守护进程,则偶尔会有用。 |
--no-parallel | 禁用并行执行以构建项目。 |
--no-scan | 禁用创建构建扫描。 |
--no-watch-fs | 禁用文件系统的监视功能。 |
--offline | 在没有访问网络资源的情况下执行构建。 |
-P, --project-prop | 为构建脚本设置项目属性(例如 -Pmyprop=myvalue)。 |
-p, --project-dir | 指定Gradle的起始目录。默认为当前目录。 |
--parallel | 并行构建项目。Gradle将尝试确定要使用的执行器线程的最佳数量。 |
--priority | 指定Gradle守护进程及其启动的所有进程的调度优先级。可选值为'normal'(默认)或'low'。 |
--profile | 对构建执行时间进行分析,并在/reports/profile目录中生成报告。 |
--project-cache-dir | 指定项目特定的缓存目录。默认为根项目目录中的.gradle。 |
-q, --quiet | 仅记录错误。 |
--refresh-keys | 刷新用于依赖验证的公钥。 |
--rerun-tasks | 忽略先前缓存的任务结果。 |
-S, --full-stacktrace | 打印所有异常的完整(非常详细)堆栈跟踪。 |
-s, --stacktrace | 打印所有异常的堆栈跟踪。 |
--scan | 创建构建扫描。如果尚未应用构建扫描插件,Gradle将发出警告。 |
--status | 显示正在运行和最近停止的Gradle守护进程的状态。 |
--stop | 停止运行的Gradle守护进程。 |
-t, --continuous | 启用连续构建。Gradle不会退出,并在任务文件输入更改时重新执行任务。 |
-U, --refresh-dependencies | 刷新依赖项的状态。 |
--update-locks | 部分更新依赖锁定,允许传入的模块注释更改版本。 |
-V, --show-version | 打印版本信息并继续。 |
-v, --version | 打印版本信息并退出。 |
-w, --warn | 将日志级别设置为警告。 |
--warning-mode | 指定要生成的警告模式。可选值为'all'、'fail'、'summary'(默认)或'none'。 |
--watch-fs | 启用对文件系统的监视,允许在下次构建时重复使用有关文件系统的数据。 |
--write-locks | 持久化锁定配置的依赖解析,如果存在现有锁定信息,则忽略它们。 |
-x, --exclude-task | 指定要从执行中排除的任务。 |
-- | 表示内置选项的结束。后续参数将被解析为任务或任务选项。 |
命令行大全
命令行界面是与Gradle交互的主要方法。
命令行使用方法
以下部分描述了Gradle命令行界面的使用方法。
一些插件还会添加自己的命令行选项。例如,Java测试过滤器会添加--tests选项。有关为自己的任务暴露命令行选项的更多信息,请参阅声明命令行选项。
执行任务
您可以在项目报告部分了解可用的项目和任务。
大多数构建支持一个通用的任务集,称为生命周期任务。这包括build、assemble和check任务。
要在根项目上执行名为myTask的任务,请键入:
$ gradle :myTask
这将运行单个myTask任务及其所有依赖项。
指定任务选项
要向任务传递选项,请在任务名称后面使用--前缀加上选项名称:
$ gradle exampleTask --exampleOption=exampleValue
区分任务选项和内置选项
Gradle不会阻止任务注册与Gradle内置选项冲突的选项,例如--profile或--help。
您可以通过在命令中任务名称之前使用--分隔符来解决与Gradle内置选项冲突的任务选项问题:
$ gradle [--内置选项名称...] -- [任务名称...] [--任务选项名称...]
在多项目构建中执行任务
在多项目构建中,子项目任务可以通过使用:分隔子项目名称和任务名称来执行。以下两种方式在从根项目运行时是等效的:
$ gradle :subproject:taskName
$ gradle subproject:taskName
您还可以使用只包含任务名称的任务选择器为所有子项目运行一个任务。
以下命令在从根项目目录调用时为所有子项目运行test任务:
$ gradle test
某些任务选择器(如help或dependencies)只会在调用它们的项目上运行任务,而不会在所有子项目上运行。
当从子项目中调用Gradle时,应省略项目名称:
$ cd subproject
$ gradle taskName
当从子项目目录执行Gradle Wrapper时,相对地引用gradlew。例如:../gradlew taskName。
执行多个任务
您也可以指定多个任务。任务的依赖关系决定了执行的精确顺序,没有依赖关系的任务可能会比在命令行上列出的顺序更早执行。
例如,以下命令将按照命令行上列出的顺序执行test和deploy任务,并且还会执行每个任务的依赖项。
$ gradle test deploy
常见任务
以下是内置和大多数主要Gradle插件应用的任务约定。
计算所有输出
在Gradle构建中,build任务通常用于指定汇总所有输出和运行所有检查:
$ gradle build
运行应用程序
应用程序通常使用run任务来运行,该任务组装应用程序并执行某个脚本或二进制文件:
$ gradle run
运行所有检查
通常使用check任务来执行所有验证任务,包括测试和静态代码分析:
$ gradle check
清理输出
您可以使用clean任务删除build目录的内容。这样做将导致预先计算的输出丢失,并导致后续任务执行需要额外的构建时间:
$ gradle clean
项目报告
Gradle提供了几个内置任务,用于显示构建的特定细节。这些任务可以帮助您了解构建的结构和依赖关系,以及调试问题。
列出项目
运行projects任务可以列出所选项目的子项目列表,并以层次结构的形式显示:
$ gradle projects
此外,在Build Scans中还可以获得项目报告。
列出任务
运行gradle tasks可以列出所选项目的主要任务。该报告会显示项目的默认任务(如果有)以及每个任务的描述:
$ gradle tasks
默认情况下,该报告只显示分配给任务组的任务。
在列出任务时,任务组(如verification、publishing、help、build等)作为每个部分的标题:
Task :tasks
编译任务
assemble - 组装此项目的输出内容。
编译创建任务
init - 初始化一个新的Gradle构建。
发布任务
assembleDist - 组装主要的发布文件
文档任务
javadoc - 生成主要源代码的Javadoc API文档 您可以使用--all选项来获取更详细的任务列表信息:
$ gradle tasks --all
使用--no-all选项可以限制报告仅包含分配给任务组的任务。
如果需要更精确的信息,可以使用--group选项来只显示特定组的任务:
$ gradle tasks --group="build setup"
显示任务详细信息
通过运行gradle help --task someTask可以获取特定任务的详细信息:
$ gradle -q help --task libs
此信息包括任务的完整路径、类型、可用的特定于任务的命令行选项以及给定任务的描述。
您还可以使用--types选项获取有关任务类类型的详细信息,或者使用--no-types选项隐藏此信息。
报告依赖关系
Build Scans提供了一个全面的、可视化的报告,显示构建中的依赖关系、传递性依赖关系和版本选择。您可以使用--scan选项调用Build Scans:
$ gradle myTask --scan
这将生成一个Web页面报告链接,其中包含依赖关系的信息。
列出项目依赖关系
运行dependencies任务可以列出所选项目的依赖关系列表,并按配置进行分组。对于每个配置,都会以树状结构显示该配置的直接和传递依赖关系。
以下是该报告的示例:
$ gradle dependencies
> Task :app:dependencies
------------------------------------------------------------
Project ':app'
------------------------------------------------------------
compileClasspath - 主要源集的编译类路径。
+--- project :model
| \--- org.json:json:20220924
+--- com.google.inject:guice:5.1.0
| +--- javax.inject:javax.inject:1
| +--- aopalliance:aopalliance:1.0
| \--- com.google.guava:guava:30.1-jre -> 28.2-jre
| +--- com.google.guava:failureaccess:1.0.1
| +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
| +--- com.google.code.findbugs:jsr305:3.0.2
| +--- org.checkerframework:checker-qual:2.10.0 -> 3.28.0
| +--- com.google.errorprone:error_prone_annotations:2.3.4
| \--- com.google.j2objc:j2objc-annotations:1.3
+--- com.google.inject:guice:{strictly 5.1.0} -> 5.1.0 (c)
+--- org.json:json:{strictly 20220924} -> 20220924 (c)
+--- javax.inject:javax.inject:{strictly 1} -> 1 (c)
+--- aopalliance:aopalliance:{strictly 1.0} -> 1.0 (c)
+--- com.google.guava:guava:{strictly [28.0-jre, 28.5-jre]} -> 28.2-jre (c)
+--- com.google.guava:guava:{strictly 28.2-jre} -> 28.2-jre (c)
+--- com.google.guava:failureaccess:{strictly 1.0.1} -> 1.0.1 (c)
+--- com.google.guava:listenablefuture:{strictly 9999.0-empty-to-avoid-conflict-with-guava} -> 9999.0-empty-to-avoid-conflict-with-guava (c)
+--- com.google.code.findbugs:jsr305:{strictly 3.0.2} -> 3.0.2 (c)
+--- org.checkerframework:checker-qual:{strictly 3.28.0} -> 3.28.0 (c)
+--- com.google.errorprone:error_prone_annotations:{strictly 2.3.4} -> 2.3.4 (c)
\--- com.google.j2objc:j2objc-annotations:{strictly 1.3} -> 1.3 (c)
有关构建脚本和输出的具体示例,请参阅查看和调试依赖关系。
运行buildEnvironment任务可以可视化所选项目的构建脚本依赖关系,类似于gradle dependencies可视化正在构建的软件的依赖关系:
$ gradle buildEnvironment
运行dependencyInsight任务可以查看与指定输入匹配的特定依赖关系(或依赖关系)的详细信息:
$ gradle dependencyInsight --dependency [...] --configuration [...]
--configuration参数将报告限制为特定配置,例如compileClasspath。
列出项目属性
运行properties任务可以列出所选项目的属性列表:
$ gradle -q api:properties
您还可以使用可选的--property参数查询单个属性:
$ gradle -q api:properties --property allprojects
命令行补全
Gradle通过gradle-completion(单独安装)为任务、选项和Gradle属性提供了bash和zsh的命令行补全支持:
gradle completion 4.0
调试选项
- ?, -h, --help:显示帮助消息,其中包含内置CLI选项。要显示项目上下文选项(包括特定任务的帮助信息),请参阅help任务。
- -v, --version:打印Gradle、Groovy、Ant、JVM和操作系统的版本信息,并退出而不执行任何任务。
- -V, --show-version:打印Gradle、Groovy、Ant、JVM和操作系统的版本信息,并继续执行指定的任务。
- -S, --full-stacktrace:为所有异常打印完整(非常冗长)的堆栈跟踪。还可参阅日志选项。
- -s, --stacktrace:为用户异常(如编译错误)打印堆栈跟踪。还可参阅日志选项。
- --scan:创建一个Build Scan,其中包含有关Gradle构建各个方面的详细性能诊断信息。
性能选项
以下是优化和改进构建性能时可以尝试的选项:
- --build-cache, --no-build-cache:切换Gradle构建缓存。Gradle将尝试重用先前构建的输出。默认为关闭。
- --configuration-cache, --no-configuration-cache:切换配置缓存。Gradle将尝试重用先前构建的配置。默认为关闭。
- --configuration-cache-problems=(fail,warn):配置如何处理配置缓存中的问题。默认为fail。设置为warn以报告问题而不失败构建。
- --configure-on-demand, --no-configure-on-demand:切换按需配置。只有相关的项目在此次构建运行中进行配置。默认为关闭。
- --max-workers:设置Gradle可以使用的最大工作进程数。默认为处理器数量。
- --parallel, --no-parallel:并行构建项目。有关此选项的限制,请参阅并行项目执行。默认为关闭。
- --priority:指定Gradle守护进程和其启动的所有进程的调度优先级。值可以是normal或low。默认为normal。
- --profile:在layout.buildDirectory.dir("reports/profile")目录中生成高级性能报告。推荐使用--scan。
- --scan:生成详细的性能诊断信息的构建扫描。
日志选项
- --watch-fs, --no-watch-fs:切换文件系统监视。启用时,Gradle会在构建之间重用收集到的文件系统信息。默认情况下,在支持此功能的操作系统上启用。
Gradle守护进程选项
可以通过以下命令行选项来管理Gradle守护进程:
- --daemon, --no-daemon:使用Gradle守护进程运行构建。如果守护进程未运行或现有守护进程繁忙,则会启动守护进程。默认为启用。
- --foreground:以前台进程方式启动Gradle守护进程。
- --status(独立命令):运行gradle --status以列出正在运行和最近停止的Gradle守护进程。它只显示与Gradle版本相同的守护进程。
- --stop(独立命令):运行gradle --stop以停止所有与相同版本的Gradle守护进程。
环境变量设置选项
Gradle支持以下环境变量来配置其行为:
- GRADLE_HOME:指定Gradle安装的位置。
- GRADLE_USER_HOME:指定Gradle用户数据的位置。
- GRADLE_OPTS:指定传递给Gradle守护进程的JVM参数。
- JAVA_HOME:指定Java安装的位置。
这些环境变量可在脚本中使用,也可以通过命令行选项进行覆盖。
日志选项
设置日志级别
您可以使用以下选项自定义Gradle日志的详细程度,按从最不详细到最详细的顺序排列。
-Dorg.gradle.logging.level=(quiet,warn,lifecycle,info,debug) 通过Gradle属性设置日志级别。
-q, --quiet 仅记录错误信息。
-w, --warn 将日志级别设置为警告。
-i, --info 将日志级别设置为信息。
-d, --debug 以调试模式记录日志(包括常规堆栈跟踪)。
默认情况下,日志级别为lifecycle。
自定义日志格式
您可以通过以下方式控制富输出(颜色和字体变体)的使用,通过指定以下控制台模式:
-Dorg.gradle.console=(auto,plain,rich,verbose) 通过Gradle属性指定控制台模式。下面描述了不同的模式。
--console=(auto,plain,rich,verbose) 指定要生成的控制台输出类型。
设置为plain以仅生成纯文本。此选项会禁用控制台输出中的所有颜色和其他富输出。当Gradle未连接到终端时,这是默认设置。
设置为auto(默认值)可在连接到控制台的构建过程中启用颜色和其他富输出,或在未连接到控制台时仅生成纯文本。当Gradle连接到终端时,这是默认设置。
设置为rich以启用控制台输出中的颜色和其他富输出,无论构建过程是否连接到终端。当未连接到终端时,构建输出将使用ANSI控制字符生成富输出。
设置为verbose以在生命周期日志级别下启用颜色和其他富输出,包括任务名称和结果(与Gradle 3.5及更早版本中的默认设置相同)。
显示或隐藏警告
默认情况下,Gradle不会显示所有警告(例如弃用警告)。相反,Gradle会收集这些警告并在构建结束时生成摘要,如下所示:
此构建中使用了已弃用的Gradle功能,因此与Gradle 5.0不兼容。 您可以通过以下选项在控制台上控制警告的详细程度:
-Dorg.gradle.warning.mode=(all,fail,none,summary) 通过Gradle属性指定警告模式。下面描述了不同的模式。
--warning-mode=(all,fail,none,summary) 指定如何记录警告。默认值为summary。
将其设置为all以记录所有警告。
将其设置为fail以记录所有警告并在有任何警告时使构建失败。
将其设置为summary以抑制所有警告,并在构建结束时记录摘要。
将其设置为none以抑制所有警告,包括构建结束时的摘要。
富控制台
Gradle的富控制台在构建运行时显示额外的信息。
Gradle富控制台 功能:
进度条和计时器直观地描述整体状态
以下并行工作行描述当前正在进行的操作
使用颜色和字体突出显示重要的输出和错误
执行选项
以下选项通过更改要构建的内容或解析依赖关系的方式来影响构建的执行方式。
--include-build 以组合形式运行构建,包括指定的构建。
--offline 指定构建无需访问网络资源。
-U, --refresh-dependencies 刷新依赖项的状态。
--continue 在任务失败后继续任务执行。
-m, --dry-run 禁用所有任务操作的Gradle运行。使用此选项可以显示将要执行的任务。
-t, --continuous 启用连续构建。Gradle不会退出,并在任务文件输入发生更改时重新执行任务。
--write-locks 指示应持久化所有可锁定的已解析配置的锁状态。
--update-locks [,]* 指示更新锁文件中指定模块的版本。
此标志还隐含了--write-locks。
-a, --no-rebuild 不重新构建项目的依赖项。对于调试和微调buildSrc非常有用,但可能导致错误的结果。请谨慎使用!
依赖验证选项
在依赖验证中了解更多信息。
-F=(strict,lenient,off), --dependency-verification=(strict,lenient,off) 配置依赖验证模式。
默认模式为strict。
-M, --write-verification-metadata 为项目中使用的依赖项(逗号分隔列表)生成校验和,用于依赖验证。
--refresh-keys 刷新用于依赖验证的公钥。
--export-keys 导出用于依赖验证的公钥。
环境选项
您可以通过以下选项自定义构建脚本、设置、缓存等的位置。
-b, --build-file (已弃用) 指定构建文件。例如:gradle --build-file=foo.gradle。默认为build.gradle,然后是build.gradle.kts。
-c, --settings-file (已弃用) 指定设置文件。例如:gradle --settings-file=somewhere/else/settings.gradle
-g, --gradle-user-home 指定Gradle用户主目录。默认为用户主目录中的.gradle目录。
-p, --project-dir 指定Gradle的起始目录。默认为当前目录。
--project-cache-dir 指定项目特定的缓存目录。默认值为根项目目录中的.gradle。
-D, --system-prop 设置JVM的系统属性,例如 -Dmyprop=myvalue。
-I, --init-script 指定初始化脚本。
-P, --project-prop 设置根项目的项目属性,例如 -Pmyprop=myvalue。
-Dorg.gradle.jvmargs 设置JVM参数。
-Dorg.gradle.java.home 设置JDK安装目录。
任务选项
任务可以定义与上述大多数全局选项不同的特定于任务的选项(由Gradle本身解释,可以出现在命令行的任何位置,并且可以使用--help选项列出)。
任务选项:
由任务自身消耗和解释;
必须紧跟在命令行中的任务后面指定;
可以使用gradle help --task someTask列出(参见显示任务使用详细信息)。
要了解如何为自己的任务声明命令行选项,请参阅声明和使用命令行选项。
内置任务选项
内置任务选项是适用于所有任务的任务选项。当前,存在以下内置任务选项:
--rerun 导致即使是最新的任务也会重新运行。类似于--rerun-tasks,但适用于特定任务。
引导新项目
创建新的Gradle构建
使用内置的gradle init任务创建一个带有新项目或现有项目的新Gradle构建。
$ gradle init 大多数情况下,都会指定项目类型。可用类型包括basic(默认值)、java-library、java-application等。有关详细信息,请参阅init插件文档。
$ gradle init --type java-library
标准化和提供Gradle
内置的gradle wrapper任务生成一个名为gradlew的脚本,该脚本调用指定版本的Gradle,并在需要时下载它。
$ gradle wrapper --gradle-version=8.1 您还可以指定--distribution-type=(bin|all),--gradle-distribution-url,--gradle-distribution-sha256-sum,以及--gradle-version。有关使用这些选项的详细信息,请参阅Gradle包装器部分。
连续构建
连续构建允许在文件输入更改时自动重新执行所请求的任务。您可以使用-t或--continuous命令行选项以此模式执行构建。
例如,您可以通过运行以下命令来持续运行test任务和所有依赖任务:
$ gradle test --continuous Gradle将在源代码或测试代码发生更改后,像您运行gradle test一样运行。这意味着与请求的任务有关的非相关更改(例如构建脚本的更改)不会触发重新构建。要包含构建逻辑的更改,必须手动重新启动连续构建。
连续构建使用文件系统监视来检测输入更改。如果您的系统上的文件系统监视不起作用,则连续构建也无法正常工作。特别地,当使用--no-daemon时,连续构建将不起作用。
当Gradle检测到输入更改时,它不会立即触发构建。相反,它将等待在一定时间内未检测到其他更改 - 静默期。您可以通过Gradle属性org.gradle.continuous.quietperiod以毫秒为单位配置静默期。
终止连续构建
如果Gradle连接到交互式输入源(例如终端),则可以通过按下CTRL-D来退出连续构建(在Microsoft Windows上,还需要按ENTER或RETURN键)。
如果Gradle未连接到交互式输入源(例如作为脚本的一部分运行),则必须终止构建过程(例如使用kill命令或类似方法)。
如果正在通过Tooling API执行构建,则可以使用Tooling API的取消机制取消构建。
限制
在某些情况下,连续构建可能无法检测到输入更改。
创建输入目录
有时,创建先前不存在的输入目录不会触发构建,这是由于文件系统监视的工作方式导致的。例如,创建src/main/java目录可能不会触发构建。同样地,如果输入是一个经过过滤的文件树,并且没有匹配过滤器的文件,那么创建匹配的文件可能不会触发构建。
未跟踪任务的输入
对于未跟踪任务或没有输出的任务的输入更改可能不会触发构建。
文件夹外部的文件更改
Gradle仅监视项目目录中的文件更改。文件夹外部的文件更改将无法被检测到并触发构建。
构建循环
Gradle在任务执行之前开始监视更改。如果一个任务在执行过程中修改了自己的输入,Gradle将检测到这个更改并触发新的构建。如果每次任务执行时输入再次被修改,则会再次触发构建。这与连续构建无关。一个修改自己的输入的任务在没有连续构建的情况下永远不会被认为是最新的。
如果您的构建进入此类构建循环,可以通过查看Gradle报告的更改文件列表来跟踪该任务。在识别出每个构建期间发生更改的文件后,您应该查找具有该文件作为输入的任务。在某些情况下,这可能很明显(例如,使用compileJava编译Java文件)。在其他情况下,您可以使用--info日志记录来找到由于已识别的文件而过时的任务。
符号链接的更改
通常情况下,Gradle不会检测对符号链接或通过符号链接引用的文件的更改。
不考虑构建逻辑的更改
当前实现不会在后续构建中重新计算构建模型。这意味着任务配置的更改或构建模型的任何其他更改都将被忽略。