我正在尝试将各种设置与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(
// ...
)
}
非常感谢!
答案 0 :(得分: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/
目录。
答案 1 :(得分: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
当然,如果你使用Play 2.2和SBT 0.13,故事会有所不同。 :)
请告诉我这是否有意义,并为您感觉更清洁。