sbt如何在scala代码中定义范围设置

时间:2016-02-08 13:34:39

标签: scala sbt

虽然我正在为一些项目使用多项目构建,但我不想将所有项目都放在一个构建中。然而,我希望能够在一个地方为多个构建定义某些设置。因此,最好的方法是创建一个Scala文件,然后从每个项目子目录链接到它。因此,在项目子目录中创建以下代码:

import sbt._
import Keys._
import AddSettings._

object RBuild extends Build
{     
  override lazy val settings: Seq[Def.Setting[_]] = super.settings ++ Seq(
  scalaVersion := "2.11.7",
  scalaSource in Compile := baseDirectory.value / "src",
  scalaSource in Test := baseDirectory.value / "testSrc",       
  unmanagedSourceDirectories in Compile := Seq(baseDirectory.value / "src"),
  unmanagedSourceDirectories in Test := Seq(baseDirectory.value / "src"),
  scalacOptions ++= Seq("-feature", "-language:implicitConversions", "-deprecation", "-target:jvm-1.8"))
}

scalaVersion可以正常工作,但源目录的任何设置都不会对构建产生任何影响,无论是单独设置还是组合设置。它们仍然与默认值相同。 我做错了什么?我不确定scalacOptions设置在sbt终端中使用inspect命令是否有效。

1 个答案:

答案 0 :(得分:0)

我遇到了这个寻找解决其他问题的方法。设置项目中的设置:

import sbt._
import Keys._
import AddSettings._

object RBuild extends Build
{
  lazy val root = (project in file(".")).settings(
  scalaVersion := "2.11.7",
  scalaSource := (baseDirectory.value / "src"),
  scalaSource in Test := baseDirectory.value / "testSrc",       
  unmanagedSourceDirectories in Compile := Seq(baseDirectory.value / "src"),
  unmanagedSourceDirectories in Test := Seq(baseDirectory.value / "src"),
  scalacOptions ++= Seq("-feature", "-language:implicitConversions", "-deprecation", "-target:jvm-1.8"))       
}

虽然这仍然没有回答为什么scalaVersion有效而不是其他设置的问题。我认为scalaVersion必须被视为一般设置,而其他则是项目特定的。