8

私がこのようなもの(簡略化)を使用する前は、sbt 0.11.3を使用していました:

// project/Build.scala
import sbt._
import Keys._

object MyBuild extends Build {
   lazy val standardSettings = Defaults.defaultSettings ++ Seq(
      version      := "0.2",
      scalaVersion := "2.9.2"
   )

   lazy val main = Project(
      id        = "main",
      base      = file( "." ),
      settings  = standardSettings,
      aggregate = Seq( sub )
   )

   lazy val sub = Project(
      id        = "main-sub",
      base      = file( "sub" ),
      settings  = standardSettings
   )
}

しかし、私はできるだけ多くの情報をプレーンbuild.sbtファイルに保存したいと思います。だから今私は持っています

// build.sbt
version      := "0.2"

scalaVersion := "2.9.2"

// project/Build.scala
import sbt._
import Keys._

object MyBuild extends Build {
   lazy val main = Project(
      id        = "main",
      base      = file( "." ),
      aggregate = Seq( sub )
   )

   lazy val sub = Project(
      id        = "main-sub",
      base      = file( "sub" )
   )
}

build.sbtしかし、それは私の設定からサブプロジェクトに混ざっていないようです:

> show version
[info] main-sub/*:version
[info]  0.1-SNAPSHOT
[info] main/*:version
[info]  0.2
> show scala-version
[info] main-sub/*:scala-version
[info]  2.9.1
[info] main/*:scala-version
[info]  2.9.2

これを修正する方法は?settingsまた、サブプロジェクトに明示的に追加しようとしました。

  • settings = Defaults.defaultSettings
  • settings = Project.defaultSettings
  • settings = MyBuild.settings
  • settings = main.settings(これでいいの?!)

...しかし、どれも機能しませんでした。

4

1 に答える 1

8

この情報は、 sbtのマルチプロジェクトドキュメントの最後のセクションに少し隠されています。

単一の.scalaファイルでさまざまなプロジェクトを設定する場合、さまざまなプロジェクトで再利用設定を簡単に使用できます。ただし、異なるファイルを使用する場合でも、スコープを使用して設定をグローバルに適用することbuild.sbtにより、メインビルドのすべてのプロジェクト間で設定を簡単に共有できます。ThisBuild

したがって:

// build.sbt
version in ThisBuild := "0.2"

scalaVersion in ThisBuild := "2.9.2"

わあ、あなたが二十の鍵を持っているなら、それは大きな時間を無駄にします。

于 2012-07-27T21:03:22.813 に答える