我是否可以让sbt仅针对特定任务编译具有附加依赖性的其他源?

时间:2015-01-08 16:46:37

标签: scala sbt sbt-revolver

我在编写代码时使用喷雾左轮手枪来测试我的应用程序。

我想让一个左轮手枪运行编译额外的源(例如/src/dev.scala或其他)与其他依赖项。在本地测试时,我可以在同一个vm中启动我们正在使用的一些外部服务(例如cassandra),而无需设置适当的环境。

最初我尝试设置这样的设置:

unmanagedSources in Revolver.reStart <<= (unmanagedSources in Compile) map { ss => ss :+ new File("/path/to/my/dev.scala") }

libraryDependencies in Revolver.reStart += ("org.cassandraunit" % "cassandra-unit" % "2.0.2.1")

mainClass in Revolver.reStart := Some("my.main.class.in.dev")

但是在运行任务时,我只是觉得主类不存在。

有没有办法让这项工作?我们的想法是避免将dev.scala中的cassandra-unit和代码从测试编译中删除。包装

1 个答案:

答案 0 :(得分:1)

这不起作用,因为Revolver.reStart仍使用compile in Compilecompile in Compile使用libraryDependencies libraryDependencies in Revolver.reStart

为此,您需要定义一个完全不同的自定义配置,以扩展您的Compile配置。在该配置中,例如"Localcompile",您可以使用

定义您的依赖关系
unmanagedSources in Localcompile += new File("/path/to/my/dev.scala")

libraryDependencies += "org.cassandraunit" % "cassandra-unit" % "2.0.2.1" % "localcompile"

有关示例,请参阅http://www.scala-sbt.org/0.13/docs/Advanced-Configurations-Example.html