【问题标题】:How to run a single gradle task from command line如何从命令行运行单个 gradle 任务
【发布时间】: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' }

这是我得到的输出。

【问题讨论】:

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

标签: java gradle


【解决方案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 将同时运行这两个任务。
  • 好的,这就是我告诉你提供一个例子的原因——现在这是一个相当抽象的讨论。
  • 好的,但是没有定义 taskA 和 taskB。现在很难重现错误。您要运行哪些任务?此外,您没有将 actions 添加到任务中。因此闭包中的代码在配置时间运行。
  • runSQL 和 runSchema 是我没有 taskA 和 taskB 的任务(为了简单起见,我只是选择了这些名称)。我没有添加动作,因为它们非常大。但我可以说它是关于从文件中读取一些 sql 查询并根据某些条件执行它。此外,这两个任务都接受来自命令行的参数。
  • 嗯..您提供的脚本似乎很奇怪:/请提供一个简单但可运行的脚本来重现问题。
猜你喜欢
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2021-12-20
  • 2021-01-11
  • 2018-08-19
相关资源
最近更新 更多