在“之后运行渐变任务X”;“已连接的AndroidTest”;任务成功了

在“之后运行渐变任务X”;“已连接的AndroidTest”;任务成功了,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我有一个gradletaskX,我想在connectedAndroidTest任务完成后运行,但是只有在所有测试都通过connectedAndroidTest时才运行 如何实现这一点?您正在描述任务依赖关系。您可以定义依赖于另一个任务的任务,并因此在执行时触发另一个任务: task taskX(dependsOn: 'connectedAndroidTest') << { //do something } 您需要利用特定任务的状态检查。以下是如何做到这一点: task con

我有一个gradle
taskX
,我想在
connectedAndroidTest
任务完成后运行,但是只有在所有测试都通过
connectedAndroidTest
时才运行


如何实现这一点?

您正在描述任务依赖关系。您可以定义依赖于另一个任务的任务,并因此在执行时触发另一个任务:

task taskX(dependsOn: 'connectedAndroidTest') << {
   //do something
}

您需要利用特定任务的状态检查。以下是如何做到这一点:

task connectedAndroidTest << {
  logger.lifecycle("Running $name")
  if (project.hasProperty('lol')) {
    throw new Exception('lol')
  }
}

task taskX << {
  def failure = tasks.connectedAndroidTest.state.failure
  if(!failure) {
    logger.lifecycle("$name is finalizer")
  } else {
    logger.lifecycle("$tasks.connectedAndroidTest.name failed, nothing to do.")
  }
}

connectedAndroidTest.finalizedBy(taskX)
输出将是:

:connectedAndroidTest
Running connectedAndroidTest
:taskX
taskX is finalizer

BUILD SUCCESSFUL

Total time: 1.889 secs

This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.8/userguide/gradle_daemon.html
当:

运行,则输出为:

:connectedAndroidTest
Running connectedAndroidTest
:connectedAndroidTest FAILED
:taskX
connectedAndroidTest failed, nothing to do.

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/opal/tutorial/stackoverflow/34797260/build.gradle' line: 4

* What went wrong:
Execution failed for task ':connectedAndroidTest'.
> lol

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1.931 secs
可以找到一个演示

  [1]: https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#finalizedBy(java.lang.Object...)

在这种情况下,
finalizedBy
是不够的。
gradle cAT -Plol
:connectedAndroidTest
Running connectedAndroidTest
:connectedAndroidTest FAILED
:taskX
connectedAndroidTest failed, nothing to do.

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/opal/tutorial/stackoverflow/34797260/build.gradle' line: 4

* What went wrong:
Execution failed for task ':connectedAndroidTest'.
> lol

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1.931 secs
  [1]: https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#finalizedBy(java.lang.Object...)