And*_*cko 4 android gradle android-gradle-plugin
我有一个 gradle taskX,我想在connectedAndroidTest任务完成后运行它,但前提是所有测试都通过connectedAndroidTest。
我怎样才能做到这一点?
您需要finalizedBy与特定任务的状态检查一起使用。具体方法如下:
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)
Run Code Online (Sandbox Code Playgroud)
现在如果运行:
gradle cAT
Run Code Online (Sandbox Code Playgroud)
输出将是:
: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
Run Code Online (Sandbox Code Playgroud)
什么时候:
gradle cAT -Plol
Run Code Online (Sandbox Code Playgroud)
运行,则输出为:
: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
Run Code Online (Sandbox Code Playgroud)
这里可以找到一个演示。
[1]: https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#finalizedBy(java.lang.Object...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |