gpt4 book ai didi

Gradle:仅在任务失败时执行操作

转载 作者:行者123 更新时间:2023-12-03 02:40:26 24 4
gpt4 key购买 nike

我想打开检查失败时使用的多个“检查”和“测试”插件的报告文件。我知道我can use "finalizedBy可以执行另一个任务,无论原始任务是否已执行。使用该知识,仅当相应任务(在此示例中为checkstyle)失败时,我才尝试以下操作打开报告:

task showCheckStyleResultsInBrowser(type: Exec) {
ext.htmlFileName = "main.html"
executable 'open'
args 'file:///' + checkstyleMain.reports.xml.destination.parent + "/" + ext.htmlFileName
}

task showCheckStyleResultsIfFailed {
ext.aCheckFailed = true
doLast {
if (ext.aCheckFailed) {
showCheckStyleResultsInBrowser.execute()
}
}
}

checkstyleMain {
finalizedBy 'showCheckStyleResultsIfFailed'
doLast {
// convert the xml output to html via https://stackoverflow.com/questions/20361942/generate-checkstyle-html-report-with-gradle
ant.xslt(in: reports.xml.destination,
style: new File('config/checkstyle/checkstyle-noframes-sorted.xsl'),
out: new File(reports.xml.destination.parent, showCheckStyleResultsInBrowser.htmlFileName))

showCheckStyleResultsIfFailed.aCheckFailed = false
}
}

说明(据我了解):
  • showCheckStyleResultsInBrowser实际执行报告打开的任务。您可以忽略它的实际作用,但是如果检查任务失败,它应该执行
  • showCheckStyleResultsIfFailed任务声明一个属性aCheckFailed并将其初始化为true。执行该命令时,它会检查它是否仍然为true(这意味着该检查未成功完成),如果是,则使用showCheckStyleResultsInBrowser打开报告。
  • checkstyleMain是执行实际检查的任务。我对它的结果感兴趣。但是我不知道该怎么做。因此,相反,在checkStyleMain任务结束时,我根据以下事实将aCheckFailed属性设置为false:只有在先前的检查均未失败的情况下才执行最后一步。
  • showCheckStyleResultsIfFailed设置为在checkstyleMain之后执行,无论finalizedBy如何执行。即使checkstyleMain失败,它也将执行。它使用aCheckFailed属性来确定checkstyleMain是否成功完成。

  • 如果我完成完整的构建,则可以正常工作。但是,如果我只是进行部分重建而checkstyleMain任务没有运行,因为它的所有结果都已经是最新的,那么我最终会得到 aCheckFailed为true,因为 checkstyleMain没有运行,这使得它看起来好像实际上出错。

    那么,当且仅当checkstyleMain任务失败时,如何执行 showCheckStyleResultsInBrowser任务?另外,即使实现了解决方案,我的解决方案也相当笨拙。有没有更简单的方法?

    最佳答案

    您可以询问任务状态以确定它是否失败。

    task showCheckStyleResultsIfFailed {
    onlyIf {
    checkstyleMain.state.failure != null
    }
    }

    关于Gradle:仅在任务失败时执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388173/

    24 4 0
    文章推荐: flutter - 失败的断言 : line 556 pos 15: 'scrollOffsetCorrection != 0.0' : is not true
    文章推荐: delphi - 在 Delphi TStack 中循环并搜索值
    文章推荐: svn - 将 TortoiseMerge 设置为 SVN 的外部合并工具?
    文章推荐: flutter - 如何保存 List 并使用 Hive 检索?