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がロードされ、特に指定がなければScalaのAPIだけが提供される模様。
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プラグインがコンパイルエラーを起こしていました…。