使用简单的错误消息优雅地终止SBT构建

时间:2014-06-12 19:36:31

标签: sbt

我有一个 SBT 版本,用于需要 Java 8 的项目,我还包含了一些 Java 8 功能(主要是{{1在构建本身中。如果我尝试在早期的 JVM (例如1.7)上构建项目,则在运行java.time命令时会出现大量错误和异常。

因此,我决定添加一个sbt属性来检测正在使用的 JVM ,如果正在使用的 JVM 并且没有& #39;至少是版本8.当然,这只有在我用它来构建构建器时才有效(如果我把它放在initialize中,那么如果使用 JVM 我仍会遇到错误1.7或更早,因为./build.sbt元素不存在)。所以我有一个java.time文件,其中包含以下内容:

./project/build.sbt

这很有效,但相当不优雅。如果我使用 Java 7 运行initialize := { val _ = initialize.value if (!scala.util.Properties.isJavaAtLeast ("1.8")) { sys.error ("My project requires Java 8 or later") } } ,那么我从构建中获得以下输出:

sbt

如果我将相同的代码放在空的java.lang.RuntimeException: My project requires Java 8 or later at scala.sys.package$.error(package.scala:27) at $ed9be51e9ab4a59b3b3b$$anonfun$$sbtdef$1.apply(C:\Users\me\Documents\src\myproject\project\build.sbt:55) at $ed9be51e9ab4a59b3b3b$$anonfun$$sbtdef$1.apply(C:\Users\me\Documents\src\myproject\project\build.sbt:47) at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:177) at sbt.EvaluateSettings$INode.evaluate(INode.scala:135) at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:67) at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:76) at sbt.EvaluateSettings$$anon$3.run(INode.scala:72) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) [error] My project requires Java 8 or later [error] Use 'last' for the full log. Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? 文件中,并使用 Java 7 运行,那么我只是得到:

./build.sbt

也就是说,我没有收到异常消息和堆栈跟踪。

有没有办法让构建构建出口更优雅,以便我得到后一种形式的输出而不是前者?

0 个答案:

没有答案