gpt4 book ai didi

sbt - 如何使SBT任务失败并因此自行构建?

转载 作者:行者123 更新时间:2023-12-04 03:58:07 24 4
gpt4 key购买 nike

我编写了一个SBT任务,以使用Rhino为我的项目运行cssLint。 cssLint将退出代码返回到我的SBT任务。

我的问题是,如果退出代码为非零,如何使任务失败?

我不想抛出任何异常。我希望任务结果的最后一行显示[Failed]而不是[success],并且我的SBT任务的退出代码为非零。

示例

MyTask {
val exitcode = //rhino functions

//what to do??
}

如果存在CSS错误,则实际意图是使构建失败。

最佳答案

我的理解是,除非始终打印成功消息,否则

  • showSuccess设置设置为false
  • 任务引发异常。

  • 在您的特定情况下,您想报告一个错误,因此您应该抛出一个异常或结果类型的值,该值可能被视为某种异常,例如 NoneFailure

    假设您在 build.sbt中定义了以下任务:
    lazy val tsk = taskKey[Unit]("Task that always fails")

    tsk := {
    throw new IllegalStateException("a message")
    }

    当您执行 tsk任务时,此异常将被打印出来,之后没有 [success]
    [no-success]> tsk
    [trace] Stack trace suppressed: run last *:tsk for the full output.
    [error] (*:tsk) java.lang.IllegalStateException: a message
    [error] Total time: 0 s, completed Feb 15, 2014 11:45:27 PM

    我宁愿避免这种编程风格,而要依靠 Option来报告处理问题。

    使用以下 tskO定义:
    lazy val tskO = taskKey[Option[String]]("Task that reports failure as None")

    tskO := None

    然后,您将检查结果,如果它是 None,您将知道它是失败的。

    关于sbt - 如何使SBT任务失败并因此自行构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796885/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com