4

我在Eclipse Scala IDE中进行编辑,并使用sbt~ test在单独的屏幕上运行我的测试。我的测试是使用specs2编写的。

这给了我双重编译,有时 Eclipse 仍在构建,而 sbt 开始启动。

为了解决这个问题,我关闭了自动构建,但这也消除了 Eclipse 中漂亮的编译器警告和错误。

有没有办法在没有双重编译时间的情况下两者兼得?

编辑

我想最好的方法(或者可能是唯一的方法)是在sbt不编译的情况下运行测试。我尝试了该test:run命令,但这给了我以下错误:

java.lang.RuntimeException: No main class detected.
    at scala.sys.package$.error(package.scala:27)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27$$anonfun$13.apply(Defaults.scala:519)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27$$anonfun$13.apply(Defaults.scala:519)
    at scala.Option.getOrElse(Option.scala:108)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27.apply(Defaults.scala:519)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27.apply(Defaults.scala:518)
    at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581)
    at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49)
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41)
    at sbt.std.Transform$$anon$5.work(System.scala:71)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)

~ test:runEclipse 编译文件时如何使用?

4

2 回答 2

3

没有双重编译,并且在 Eclipse 中仍然有所有警告是不可能的。

但是您可以将 Eclipse 配置为不踩到 sbt 的脚趾。它不必为编译使用相同的输出文件夹。

在项目Properties > Java Build Path > Source中,选择Output folder测试源文件夹,并将位置更改为target/eclipse/test-classes.

在此处输入图像描述

这样,Scala IDE 就不会接触 sbt 创建的类文件。

您可能需要对主源文件夹执行相同的操作。

于 2013-03-26T19:50:14.700 回答
0

使用当前的sbteclipse版本,您可以使用以下设置:

EclipseKeys.eclipseOutput := Some(".target")

文档可以在这里找到:使用 sbteclipse

于 2014-10-16T22:32:23.560 回答