【问题标题】:sbt how to define scoped setting in scala codesbt 如何在 Scala 代码中定义范围设置
【发布时间】:2016-05-18 04:37:58
【问题描述】:

虽然我对某些项目使用多项目构建,但我不想将所有项目都放在一个构建中。然而,我希望能够在一个地方为多个构建定义某些设置。所以最好的方法似乎是,创建一个 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 可以工作,但源目录的任何设置都不会对构建产生任何影响,无论是单独设置还是组合设置。它们仍然与默认值相同。 我做错了什么?我不确定在 sbt 终端中使用 inspect 命令时 scalacOptions 设置是否有效。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我在寻找不同问题的解决方案时遇到了这个问题。设置项目中的设置:

    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 必须被视为一般设置,而其他设置是特定于项目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 2014-02-05
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      相关资源
      最近更新 更多