Play!framework2.0.xから2.1へ移行する時にやったこと

パッケージ名とかが細々変わってるので微妙に面倒くさい。

project/plugins.sbt の修正

addSbtPlugin("play" % "sbt-plugin" % "2.0.3")

addSbtPlugin("play" % "sbt-plugin" % "2.1.0")

に変更。

project/build.properties の修正

sbt.version=0.11.3

sbt.version=0.12.2

に変更。

project/Build.scala の修正

プロジェクト設定のクラス名やらパッケージ名やらが変わったようです。
あと、coreがモジュール分割された事に関する影響も。

importの修正
import PlayProject._

import文のこの部分を

import play.Project._

に修正。

appDependencies の修正

appDependenciesにjdbc, anorm, javaCore, javaJdbc, javaEbean, javaJpa, filtersの内、プロジェクトで利用しているものを追記。
各アイテムが何なのかは公式を参照してください。
coreがモジュール分割されたおかげで、利用するサブプロジェクトを明示的に指定しなければならないようです。

val appDependencies = Seq(
  // Add your project dependencies here,
  javaCore, javaJdbc, javaJpa, javaEbean, filters
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings( ... の修正

パッケージ名やらクラス名が変わってるので

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings()

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

に修正。
mainLang引数はなくなったようです。
appDependenciesにjavaCoreが指定されていればjava用のAPIがロードされ、特に指定がなければScalaAPIだけが提供される模様。

Controller#form()メソッドを利用している場合の修正

Controller#form()メソッドは削除されplay.data.Form#form()に移動されました。Formクラスのスタティックファクトリにした方が良いという判断なんでしょう。
なので、Controller#form()を利用しているコードは修正が必要です。
Controllerクラス内でform()メソッドを呼び出している場合は以下のstatic importを追加するだけでOK

import static play.data.Form.form;

それ以外の箇所は…頑張ってください…。


ざっくりとはこんな感じで修正すれば動くと思いますが、詳しくは公式を参照してください。これら以外でも細々色々変わっていそうな気がしていますが、チェックしきれてません…。
上記ページでアナウンスされている以外では、play.api.templates.Htmlクラスのコンストラクタの引数の型がString型からStringBuffer型へ変更されていて、自作のThymeleafプラグインコンパイルエラーを起こしていました…。