20

Play Framework 2.0(2.0.3)を使用しています。JavaプロジェクトがありappVersion、Build.scalaで定義されているアプリケーションバージョン()を読みたいです。

私がすでに見たのは、ApplicationGlobal.javaに提供されたオブジェクトから特定の構成の詳細を読み取ることは可能ですが、appVersionなどと呼ばれるキーが見つからなかったことです。

4

4 に答える 4

24

でバージョンを定義し、値を読み取らapplication.confせることができます。Build.scalaこれは、バージョン番号とアプリケーション名を使用して行いました。以下はPlay2.0で動作し、Play2.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}
}
于 2012-09-11T20:09:30.330 に答える
19

私はこの目的のためにSBTBuildInfoプラグインを使用します:

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に追加することもできます。これは、ビルドがより複雑になる場合に非常に便利です。

于 2012-09-12T04:13:37.803 に答える
9

Playの現在のバージョンは、次を使用して入手できます。

play.core.PlayVersion.current();
于 2012-09-11T14:10:42.113 に答える
5

これは、 build.sbtで定義されたPlayアプリケーションのバージョンとアプリケーション名を取得する方法です。

name := "myApp"
version :="1.0.4" 

これはPRODモードでのみ機能することに注意してください。開発モードでは、SBTはJVMインスタンスをアプリケーションと共有し、それらの呼び出しは異なるものを返します。

Application.class.getPackage().getImplementationTitle());     // returns "myApp"
Application.class.getPackage().getImplementationVersion());    // returns "1.0.4"

この場合、Applicationクラスはプロジェクトで定義されたクラスです。プロジェクトのどのクラスでもかまいません。

アップデート

Play> = 2.4.xの場合、この方法はそのままでは機能しないことに気づきました。

問題を修正するには、これをbuild.sbtに追加します

packageOptions += Package.ManifestAttributes(
  "Implementation-Version" -> (version in ThisBuild).value,
  "Implementation-Title" -> name.value
)

2つのプロパティがビルドのMANIFEST.FMファイルに追加されるため、パッケージのタイトルとバージョンをコードから読み取ることができます。

fyi:SBTネイティブパッケージャーを使用しています

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.3")
于 2015-03-25T15:38:41.820 に答える