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

用简单的错误消息优雅地终止SBT构建,sbt,Sbt,我为一个需要Java8的项目构建了一个SBT,并且在构建本身中包含了一些Java8特性(主要是Java.timepackage元素)。如果我试图在早期的JVM(如1.7)上构建项目,那么当我运行sbt命令时,会遇到大量的错误和异常 因此,我决定添加一个initialize属性来检测正在使用的JVM,如果正在使用的JVM至少不是版本8,则使用一条优雅的消息终止构建。当然,这只有在我使用它来构建构建器时才有效(如果我将它放在/build.sbt中,那么如果使用JVM 1.7或更早版本,我仍然会出错,

我为一个需要Java8的项目构建了一个SBT,并且在构建本身中包含了一些Java8特性(主要是
Java.time
package元素)。如果我试图在早期的JVM(如1.7)上构建项目,那么当我运行
sbt
命令时,会遇到大量的错误和异常

因此,我决定添加一个
initialize
属性来检测正在使用的JVM,如果正在使用的JVM至少不是版本8,则使用一条优雅的消息终止构建。当然,这只有在我使用它来构建构建器时才有效(如果我将它放在
/build.sbt
中,那么如果使用JVM 1.7或更早版本,我仍然会出错,因为
java.time
元素不存在)。因此,我有一个
/project/build.sbt
文件,其中包含以下内容:

initialize:={
val=initialize.value
如果(!scala.util.Properties.isJavaAtLeast(“1.8”)){
sys.error(“我的项目需要Java 8或更高版本”)
}
}
这是可行的,但相当不雅观。如果我使用Java 7运行
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?
如果我将相同的代码放在一个空的
/build.sbt
文件中,并使用Java 7运行,那么我只会得到:

[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?
也就是说,我没有得到异常消息和堆栈跟踪

有没有一种方法可以使构建退出更加优雅,从而获得后一种形式而不是前一种形式的输出