Play Framework 2:读取 Build.scala 中定义的应用程序版本
2022-09-02 05:18:07
我使用Play Framework 2.0 (2.0.3)。我有一个Java项目,想要阅读Build.scala中定义的应用程序版本()。appVersion
我已经看到的是,可以从提供给Global.java的对象中读取某些配置详细信息,但找不到名为appVersion或类似密钥的密钥。Application
我使用Play Framework 2.0 (2.0.3)。我有一个Java项目,想要阅读Build.scala中定义的应用程序版本()。appVersion
我已经看到的是,可以从提供给Global.java的对象中读取某些配置详细信息,但找不到名为appVersion或类似密钥的密钥。Application
您可以在 中定义版本并读取值。我使用版本号和应用程序名称执行此操作。以下内容适用于Play 2.0,Play 2.1有一个更新的解决方案。application.conf
Build.scala
在 中,加载配置并获取属性:project/Build.scala
val conf = play.api.Configuration.load(new File("."))
val appName = conf.getString("app.name").getOrElse("unnamed application")
val appVersion = conf.getString("app.version").getOrElse("0.0.0")
在定义属性中:conf/application.conf
app.version = 1.0
app.name = My Application
最后,在您的应用程序中,可以使用以下命令访问它
Play.application().configuration().getString("app.version")
配置语法具有相当多的功能,因此您甚至可以更疯狂地使用您的版本或应用程序名称:
app {
major = 1
minor = 2
revision = 3
version = ${app.major}.${app.minor}.${app.revision}
name = My Application ${app.major}.${app.minor}
}
我使用SBT BuildInfo插件来实现此目的:
import sbtbuildinfo.Plugin._
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA, settings = Defaults.defaultSettings ++ buildInfoSettings).settings(
buildInfoKeys := Seq[Scoped](name, appVersion, scalaVersion, sbtVersion),
buildInfoPackage := "org.foo.bar",
...
)
这将生成一个对象,然后您可以从源代码中调用该对象:org.foo.bar.BuildInfo
org.foo.bar.BuildInfo.version
您还可以在生成中定义自定义键,并将它们添加到 buildInfoKeys 中,如果您的生成变得更加复杂,这将非常有用。