我使用Play框架2.0(2.0.3)。 我有一个Java项目,并想阅读的应用程序版本( appVersion
在Build.scala定义)。
我已经看到的是,它可以读取从某些配置细节Application
提供给Global.java对象,但没有找到一个叫appVersion或类似的键。
我使用Play框架2.0(2.0.3)。 我有一个Java项目,并想阅读的应用程序版本( appVersion
在Build.scala定义)。
我已经看到的是,它可以读取从某些配置细节Application
提供给Global.java对象,但没有找到一个叫appVersion或类似的键。
您可以定义在版本application.conf
,让Build.scala
读取值。 我这样做是与版本号和应用程序名称。 在播放2.0以下的作品,有更新的游戏2.1的解决方案 。
在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,这是相当有用的,如果你的构建变得更加复杂。
您可以通过使用获得游戏的最新版本:
play.core.PlayVersion.current();
这是你如何能得到Play应用程序版本和应用程序的名称在build.sbt定义
name := "myApp"
version :="1.0.4"
注意在PROD模式这只是工作。 在开发模式SBT共享一个JVM实例与应用程序和那些调用返回不同的东西。
Application.class.getPackage().getImplementationTitle()); // returns "myApp"
Application.class.getPackage().getImplementationVersion()); // returns "1.0.4"
在这种情况下,应用程序类是在你的项目中定义的类。 它可以从项目中的任何类。
UPDATE
我注意到,这种方法不适用于播放> = 2.4.x中框的编制
要解决此问题添加到您的build.sbt
packageOptions += Package.ManifestAttributes(
"Implementation-Version" -> (version in ThisBuild).value,
"Implementation-Title" -> name.value
)
这两个属性将附加到MANIFEST.FM文件在构建这样的包名称和版本可从代码读取。
FYI:我用SBT本地打包
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.3")