2015-01-08 103 views
7

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

这是我正在做的一个样本。

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' } 

这是我得到的输出。 enter image description here

+0

解决方案在这里:http://stackoverflow.com/questions/23546286/gradle-task-should-not-execute-automatically/23546350#23546350 – Tomin

+0

我看到你运行'gradle'命令。我在我的电脑上找不到'gradle.exe'。我是Android和Gradle构建系统的新手。我在哪里可以找到gradle可执行文件? –

+0

@SaeedNeamati如果您没有安装Gradle(大多数Gradle项目包含gradlew包装器),请使用'gradlew',否则您可以从[Gradle网站](http://gradle.org)安装Gradle。 – ThePyroEagle

回答

3

您可以使用-x选项或--exclude-task切换从任务图中排除任务。但提供可运行示例是个好主意。

+0

gradle taskA -x taskB将运行这两个任务。 – Tomin

+1

好吧,这就是为什么我告诉你提供一个例子 - 现在这是一个非常抽象的讨论。 – Opal

+0

我用一个例子更新了我的线程。请检查 – Tomin

11

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

你想要的是这样的:对于 'doLast'

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

task runSchema << { 
    println 'Creating schema' 
} 

请介意快捷键 '< <'。 doLast步骤仅在执行任务时执行,而在分析gradle文件时将执行任务的配置。

当你调用

gradle runSchema 

你会看到'配置SQL任务'和事后'创建模式'​​输出。这意味着runSQLTask将被配置但不被执行。

如果你打电话

gradle runSQL 

比你,你会看到:

配置SQL任务 :

runSchema是因为runSQL执行runsSQL 执行SQL:runSchema 创建模式 取决于它。

+0

是的。这回答了这个问题。谢谢 – Tomin

相关问题