android - 如何在另一个任务之后运行 gradle 任务,即使是最后一个任务也有失败的依赖项

标签 android gradle

问题是:

  1. 有一个安卓应用程序。我想执行 android 仪器测试(gradle 任务是 connectedCheck)。
  2. 我想在浏览器中打开生成的报告,而不管测试是否成功。

这里是我的任务代码:

task showReportInBrowser << {
    String resultsPath = projectDir.toString().replaceAll("\\\\", '/')
    resultsPath = resultsPath + '/build/reports/androidTests/connected/index.html'
    java.awt.Desktop.desktop.browse resultsPath.toURI()
}

我试过这个:

connectedCheck.finalizedBy showReportInBrowser

如果 connectedCheck 正常执行,我会得到我想要的。 但是如果 connectedCheck 失败,我的 showReportInBrowser 就不会执行。

我认为这是因为 connectedCheck 任务依赖于 connectedDebugAndroidTest 任务,该任务在执行时失败,因此 connectedCheck 甚至没有' t 启动,我的 showReportInBrowser 也没有启动。

所以我尝试了这个:

connectedDebugAndroidTest.finalizedBy showReportInBrowser

但是 gradle 说:Error:(75, 0) Could not find property 'connectedDebugAndroidTest' on project ':app'。 打开文件

我不明白:为什么 connectedCheckconnectedDebugAndroidTest 都显示在 gradle verification 组中,但我可以在我的构建脚本中使用只有connectedCheck

我怎样才能达到我的目标?

最佳答案

在我的例子中,失败发生在 connectedDebugAndroidTest 任务中。因此,要忽略特定子任务中的所有失败,只需使用类似的东西:

connectedDebugAndroidTest {
    ignoreFailures = true
}

但在这种情况下它会导致

Error:(66, 0) Gradle DSL method not found: 'connectedDebugAndroidTest()'

如图here您可以使用以下旁路:

project.gradle.taskGraph.whenReady {
    connectedDebugAndroidTest {
        ignoreFailures = true
    }
}

关于android - 如何在另一个任务之后运行 gradle 任务,即使是最后一个任务也有失败的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062761/

相关文章:

android - 如何从 FrameBuffer 截取屏幕截图?

android - 如何从 IsoDep 获取额外的卡数据?

android - 将 FFTW 链接到 Android NDK 应用程序

Android - Firebase - TaskSnapshot - 方法只能在私有(private)范围内访问?

android - Firebase Firestore阻止Gradle完成构建

gradle - 无法使用Gradle 4.5将jacoco报告上载到TeamCity

Gradle 依赖版本语法

spring - OpenApiGenerate后queryDsl的Spring Gradle任务失败

androidTest编译某个库的androidTest文件夹下的文件

android - 谷歌地图 - 底部有标记的相机位置