如何从命令行运行单个 gradle 任务

Posted

技术标签:

【中文标题】如何从命令行运行单个 gradle 任务【英文标题】:How to run a single gradle task from command line 【发布时间】:2015-03-06 09:47:35 【问题描述】:

在我的项目中,我的 build.gradle 中有几个任务。我希望这些任务在运行时是独立的。即我需要从命令行运行单个任务。但是命令“gradle taskA”将同时运行我不想要的 taskA 和 taskB。如何防止任务正在运行?

这是我正在做的一个示例。

   task runsSQL
    description 'run sql queries'
    apply plugin: 'java'
    apply plugin: 'groovy'

    print 'Run SQL'  

task runSchema
    apply plugin: 'java'
    apply plugin: 'groovy'

    print 'Run Schema' 

这是我得到的输出。

【问题讨论】:

解决方案:***.com/questions/23546286/… 我看到你运行了gradle 命令。我在我的电脑上找不到gradle.exe。我是 android 和 Gradle 构建系统的新手。我在哪里可以找到 gradle 可执行文件? @SaeedNamati 如果您没有安装 Gradle,请使用 gradlew(大多数 Gradle 项目包含包装器 gradlew),否则您可以从 the Gradle website 安装 Gradle。 您不需要将每个插件单独应用于每个任务。只需在文件开头执行apply plugin: 'java'apply plugin: 'groovy' 即可。 【参考方案1】:

我猜你错过的一点是你没有在这里定义任务,但你配置了任务。查看 gradle 文档:http://www.gradle.org/docs/current/userguide/more_about_tasks.html

你想要的是这样的:

task runsSQL (dependsOn: 'runSchema')
    description 'run sql queries'
    println 'Configuring SQL-Task' 
    doLast() 
        println "Executing SQL"
    


task runSchema << 
    println 'Creating schema' 

请注意“doLast”的快捷方式“

当你打电话时

gradle runSchema

您将看到 “配置 SQL 任务”,然后是 “正在创建架构” 输出。这意味着 runSQLTask 将被配置但不会被执行。

如果你打电话

gradle runSQL

你会看到:

配置 SQL 任务 :runSchema 创建架构 :运行SQL 执行SQL

runSchema 被执行是因为 runSQL 依赖于它。

【讨论】:

是的。这回答了问题。谢谢【参考方案2】:

您可以使用-x 选项或--exclude-task 开关从任务图中排除任务。但最好提供可运行的示例。

【讨论】:

gradle taskA -x taskB 将同时运行这两个任务。 好的,这就是我告诉你提供一个例子的原因——现在这是一个相当抽象的讨论。 好的,但是没有定义 taskAtaskB。现在很难重现错误。您要运行哪些任务?此外,您没有将 actions 添加到任务中。因此闭包中的代码在配置时间运行。 runSQL 和 runSchema 是我没有 taskA 和 taskB 的任务(为了简单起见,我只是选择了这些名称)。我没有添加动作,因为它们非常大。但我可以说它是关于从文件中读取一些 sql 查询并根据某些条件执行它。此外,这两个任务都接受来自命令行的参数。 嗯..您提供的脚本似乎很奇怪:/请提供一个简单但可运行的脚本来重现问题。

以上是关于如何从命令行运行单个 gradle 任务的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数从 gradle exec 任务传递到命令行

Gradle 4.0 不在命令行中显示已执行的任务

从命令行运行 gradle 时如何执行和显示友好的测试输出

有没有办法从 gradle 任务中读取命令行参数?

如何通过 sql plus 从命令行发出单个命令?

Gradle教程第一章:1.1Gradle命令行使用