HOME> 梅西世界杯进球> 组织任务 2025-10-05 02:18:59
组织任务

生命周期任务对于区分用户或机器(CI 与本地)之间的工作特别有用。例如,本地机器上的开发人员可能不希望在每次更改时都运行整个构建。

让我们以一个应用了 base 插件的标准 app 为例。

Gradle base 插件定义了几个生命周期任务,包括 build、assemble 和 check。

我们通过向 app 构建脚本添加以下几行来将 build、check 任务和 run 任务分组

app/build.gradle.kts

tasks.build {

group = myBuildGroup

}

tasks.check {

group = myBuildGroup

description = "Runs checks (including tests)."

}

tasks.named("run") {

group = myBuildGroup

}

app/build.gradle

tasks.build {

group = myBuildGroup

}

tasks.check {

group = myBuildGroup

description = "Runs checks (including tests)."

}

tasks.named('run') {

group = myBuildGroup

}

如果我们现在查看 app:tasks 列表,我们可以看到这三个任务都可用

$ ./gradlew :app:tasks

> Task :app:tasks

------------------------------------------------------------

Tasks runnable from project ':app'

------------------------------------------------------------

My app build tasks

------------------

build - Assembles and tests this project.

check - Runs checks (including tests).

run - Runs this project as a JVM application

tasksAll - Show additional tasks.

如果标准生命周期任务足够,这已经很有用了。移动组有助于澄清您希望在构建中使用的任务。

在许多情况下,您需要解决更具体的要求。一个常见的场景是在不运行测试的情况下运行质量检查。目前,:check 任务运行测试和代码质量检查。相反,我们希望一直运行代码质量检查,但不运行耗时的测试。

为了添加一个质量检查生命周期任务,我们引入了一个名为 qualityCheck 的额外生命周期任务和一个名为 spotbugs 的插件。

要添加生命周期任务,请使用 tasks.register()。您只需要提供一个名称。将此任务放入我们的组中,并使用 dependsOn() 方法连接属于此新生命周期任务的可操作任务

app/build.gradle.kts

plugins {

id("com.github.spotbugs") version "6.0.7" // spotbugs plugin

}

tasks.register("qualityCheck") { // qualityCheck task

group = myBuildGroup // group

description = "Runs checks (excluding tests)." // description

dependsOn(tasks.classes, tasks.spotbugsMain) // dependencies

dependsOn(tasks.testClasses, tasks.spotbugsTest) // dependencies

}

app/build.gradle

plugins {

id 'com.github.spotbugs' version '6.0.7' // spotbugs plugin

}

tasks.register('qualityCheck') { // qualityCheck task

group = myBuildGroup // group

description = 'Runs checks (excluding tests).' // description

dependsOn tasks.classes, tasks.spotbugsMain // dependencies

dependsOn tasks.testClasses, tasks.spotbugsTest // dependencies

}

请注意,您不需要列出 Gradle 将执行的所有任务。只需在此处指定您想要收集的目标。Gradle 将确定它需要调用哪些其他任务才能达到这些目标。

在示例中,我们添加了 classes 任务(一个编译所有生产代码的生命周期任务)和 spotbugsMain 任务(检查我们的生产代码)。

我们还添加了一个描述,该描述将显示在任务列表中,有助于更好地区分这两个检查任务。

现在,如果运行 './gradlew :app:tasks',我们可以看到我们的新 qualityCheck 生命周期任务可用

$ ./gradlew :app:tasks

> Task :app:tasks

------------------------------------------------------------

Tasks runnable from project ':app'

------------------------------------------------------------

My app build tasks

------------------

build - Assembles and tests this project.

check - Runs checks (including tests).

qualityCheck - Runs checks (excluding tests).

run - Runs this project as a JVM application

tasksAll - Show additional tasks.

如果我们运行它,我们可以看到它运行 checkstyle 但不运行测试

$ ./gradlew :app:qualityCheck

> Task :buildSrc:checkKotlinGradlePluginConfigurationErrors

> Task :buildSrc:generateExternalPluginSpecBuilders UP-TO-DATE

> Task :buildSrc:extractPrecompiledScriptPluginPlugins UP-TO-DATE

> Task :buildSrc:compilePluginsBlocks UP-TO-DATE

> Task :buildSrc:generatePrecompiledScriptPluginAccessors UP-TO-DATE

> Task :buildSrc:generateScriptPluginAdapters UP-TO-DATE

> Task :buildSrc:compileKotlin UP-TO-DATE

> Task :buildSrc:compileJava NO-SOURCE

> Task :buildSrc:compileGroovy NO-SOURCE

> Task :buildSrc:pluginDescriptors UP-TO-DATE

> Task :buildSrc:processResources UP-TO-DATE

> Task :buildSrc:classes UP-TO-DATE

> Task :buildSrc:jar UP-TO-DATE

> Task :app:processResources NO-SOURCE

> Task :app:processTestResources NO-SOURCE

> Task :list:compileJava UP-TO-DATE

> Task :utilities:compileJava UP-TO-DATE

> Task :app:compileJava

> Task :app:classes

> Task :app:compileTestJava

> Task :app:testClasses

> Task :app:spotbugsTest

> Task :app:spotbugsMain

> Task :app:qualityCheck

BUILD SUCCESSFUL in 1s

16 actionable tasks: 5 executed, 11 up-to-date

到目前为止,我们已经查看了单个子项目中的任务,这在您在单个子项目中处理代码时对本地开发很有用。

通过此设置,开发人员只需要知道他们可以使用 :subproject-name:tasks 调用 Gradle 来查看哪些任务可用且对他们有用。

热转印机器多少钱一台 如何选购优质的热转印机
织梦网站如何修改数据库配置