【问题标题】:Show Ant Scala compiler error with Gradle使用 Gradle 显示 Ant Scala 编译器错误
【发布时间】:2014-12-31 07:36:03
【问题描述】:

在 Jenkins 上使用 Gradle 运行 Scala 编译时,我们使用 scalaCompileOptions.useAnt = true。有时我们也会收到编译器错误,以这种方式传递:

FAILURE:构建失败并出现异常。

出了什么问题:

任务 ':application:compileScala' 执行失败。 由于内部编译器错误,编译失败;有关详细信息,请参阅错误输出。

很遗憾没有错误输出。即使使用 --stacktrace

有人知道如何通过 Gradle 告诉 Ant 显示编译器错误吗?

【问题讨论】:

  • 旁注:我可以使用 --info 运行并且会显示编译器错误。但是构建会有点过于冗长。
  • 更新:查看我关于不使用 ScalaOptions.fork = true 的回答

标签: scala gradle


【解决方案1】:

我不会接受这个作为答案,而是为那些后来进入这个问题的人提个醒。我太责备了,因为我一开始提供的信息太少。无论如何,罪魁祸首是像这样一起使用 forkAnt

tasks.withType(ScalaCompile) {
    scalaCompileOptions.fork = true
    scalaCompileOptions.useAnt = true
}

移除fork,编译器错误会像你使用Zinc一样亮起。 (我们在本地使用 Zinc,在 Jenkins 上使用 Ant)

【讨论】:

    【解决方案2】:

    编辑: 出于某种原因,下面的代码 sn-p 并没有真正起到作用(我将其留作将来参考)。但是,这个确实: compileScala.logging.level = LogLevel.DEBUG


    尝试将其添加到您的 build.gradle 文件中:
    compileScala { // or: tasks.withType(ScalaCompile) logging.setLevel LogLevel.ERROR }

    有关 Gradle 日志记录系统的更多说明,请查看 logging chapter in the Gradle user guide

    【讨论】:

    • 很抱歉回复晚了,但这似乎没有奏效。看起来很有希望。 @r02 你测试了吗?
    • 多么奇怪,它似乎对我有用(使用 Gradle 而不是通过 Jenkins)。我会尝试挖掘,也许我使用了额外的技巧来让它工作。作为记录,我已经在 Gradle 2.0 和 2.3 上对其进行了测试。
    • 别打扰@r02,我找到了原因。将 forkuseAnt 结合使用是罪魁祸首。做了一个 gradle init --type=scala-library 并深入了解它。我想这可能是一个错误。