使用sbt 0.13.7
,我在target := new File("sbt-target")
文件中设置了build.sbt
。这适当地设置编译器将所有类文件输出到./sbt-target/scala-2.11/{test-,}classes
。没关系,但是当我调用sbt test
)时,JVM无法找到我的源文件:
> test
[error] (test:executeTests) java.lang.IllegalArgumentException: Unable to load class: com.spingo.api.test.presenter.EventSummaryPresenterSpec
[error] Total time: 2 s, completed Oct 28, 2014 3:41:27 PM
(但是,它适用于sbt test:console
)
> test:console
[warn] Multiple resolvers having different access mechanism configured with same name 'SpinGo Releases'. To avoid conflict, Remove duplicate project resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05).
Type in expressions to have them evaluated.
Type :help for more information.
scala> Class.forName("com.spingo.api.test.presenter.EventSummaryPresenterSpec")
res0: Class[_] = class com.spingo.api.test.presenter.EventSummaryPresenterSpec
我大吃一惊。
我的更高目标是我试图让scala-ide
使用不同的文件夹来编译工件而不是sbt
。这是另一个问题,但scala-ide
下的编译器会忽略<classpathentry output="..."
设置。
答案 0 :(得分:1)
我已经为sbt
创建了一个补丁,修复了我看到的问题;另外,我已经在这里进一步深入地描述了这个问题:https://github.com/sbt/sbt/issues/1701
答案 1 :(得分:1)
我刚才有同样的问题。
您需要相对于基础项目目录设置目标目录。替换:
target := new File("sbt-target")
使用:
target := baseDirectory.value / "sbt-target"