4

Play のビルド定義からさまざまな設定を分離しようとしています! 2.1 アプリケーション。

build.sbt でいくつかの設定を次のように定義しました。

name := "My Project"
version := 1.0

Build.scala でこれらの値を再利用するにはどうすればよいですか?

object ApplicationBuild extends Build {

  val main = 
    // Doesn't compile since name and version are SettingKeys, not Strings
    play.Project(name, version).settings(
      // ...
    )

}

どうもありがとう!

4

2 に答える 2

6

キーにアクセスする必要がある場合は、<<=代わりに を使用できます (代わりに のように)。この場合、グローバル スコープからバージョンと名前を取得します。:=<+=+=

val main = play.Project(appName, appVersion, appDependencies).settings(
  version <<= (version in Global)  { v => v} ,
  name <<= (name in Global) { n => n } 
)

これはデフォルトのスコープであるため、この場合はスコープを省略できます。

val main = play.Project(appName, appVersion, appDependencies).settings(
  version <<= (version)  { v => v} ,
  name <<= (name) { n => n } 
)

これのさらに短いバージョンは単純です

val main = play.Project(appName, appVersion, appDependencies).settings(
  version <<= version ,
  name <<= name
)

build.sbtファイルは、ディレクトリではなくルートディレクトリに配置する必要があることに注意してくださいproject/

于 2012-12-11T09:22:19.847 に答える
1

Build.scala は、build.sbt で定義した値にアクセスできませんが、逆に機能します。ここで何をしようとしていても、実質的には SBT 0.12 をハックしようとしているだけです。

私がお勧めするのは、.scala ファイルで共有設定を定義することです。Settings.scala. そして、Build.scala と build.sbt の両方からこれらの共有設定を参照できます。

Settings.scala

object Settings {
  appName:= "My Project"
  appVersion:= 1.0
}

Build.scala

object ApplicationBuild extends Build {
  val main = play.Project(appName, appVersion, appDependencies)...
}

build.sbt

name := Settings.appName
version := Settings.appVersion

もちろん、SBT 0.13 で Play 2.2 を使用する場合は話が異なります。:)

これが理にかなっていて、あなたにとってよりきれいに感じるかどうか教えてください.

于 2013-11-07T01:45:21.493 に答える