さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

PlayFramework2.5系からバージョンダウンさせるための変更手順

目次

1.環境

  • Windows10 64bit
  • Scala 2.11
  • PlayFramework2.5.10

今回はPlayFramework2.5.10のバージョンをPlayFramework2.3.9に下げたかったのでやってみた。

2.バージョンダウン変更手順

まずは下記の3つのファイルを修正します。

2-1.build.sbt

name := """MyApp"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(

//▽ コメントアウト
// jdbc,
// cache,
// ws,
// "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test
//△
"com.typesafe.play" %% "play-slick" % "0.8.1" // <- slickライブラリを追加
)

2-2.project/plugins.sbt

// The Play plugin

//▽ コメントアウト
// addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")
//△

//▽ 追加
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")
//△

// web plugins

addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.8")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.6")

2-3.app/controllers/HomeController.scala

package controllers

// import javax.inject._ <- 2.3.xではライブラリがないそうなので削除
import play.api._
import play.api.mvc._

/**
 * This controller creates an `Action` to handle HTTP requests to the
 * application's home page.
 */
// @Singleton <- javax.injectパッケージを削除したので削除
//class HomeController @Inject() extends Controller {
object HomeController extends Controller { <- @Singletonが使用できないのでobjectにしてシングルトンとして定義

  def index = Action {
  Ok(views.html.index("Your new application is ready."))
  }

}

2-4.起動の確認

プロジェクトルートで下記のコマンドをたたきます。

activator run

アプリケーションが起動したら下記のURLにアクセスします。

http://localhost:9000

しかし、このままですと2.3.9にバージョンダウンして起動した際に他のファイルで2.3.xには無いライブラリが参照されているためエラーが発生してしまいます。

そのため、それらのファイルは削除しちゃいます。

まずはPlayFramework2.5.10でプロジェクト作成した際のプロジェクトフォルダ内の構成
(ある程度不要な不要なフォルダやファイルを端折ってます。)

.MyApp
    │ build.sbt
    │ LICENSE
    │ README
    │
    ├─app
    │   │Filters.scala
    │   │Module.scala
    │   │
    │   ├─assets
    │   ├─controllers
    │   │ HomeController.scala
    │   │ CountController.scala
    │   │ AsyncController.scala
    │   │
    │   ├─filters
    │   │ ExampleFilter.scala
    │   │
    │   ├─services
    │   │ ApplicationTimer.scala
    │   │ Counter.scala
    │   │
    │   └─views
    │ index.scala.html
    │ main.scala.html
    │
    ├─conf
    │   application.conf
    │   logback.xml
    │   routes
    │
    ├─logs
    │   application.log
    │
    ├─project
    │   build.properties
    │   plugins.sbt
    │
    ├─public
    │   ├─images
    │   ├─javascripts
    │   └─stylesheets
    │
    └─test
       ApplicationSpec.scala
       IntegrationSpec.scala

3.エラーの修正を行う

3-1.ファイルの削除

下記のファイルは削除します。
(サンプルコードのファイルのため不要です。)

app/Filters.scala
app/Module.scala
app/controllers/CountController.scala
app/controllers/AsyncController.scala
app/filters/ExampleFilter.scala
app/services/ApplicationTimer.scala
app/services/Counter.scala

3-2.conf/routesの修正

削除したファイルを参照している記述があるためその部分を削除します。

# Routes
GET / controllers.HomeController.index

//▽ 削除
# An example controller showing how to use dependency injection
GET /count controllers.CountController.count
# An example controller showing how to write asynchronous code
GET /message controllers.AsyncController.message
//△

GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)

4.再度起動確認

再度、http://localhost:9000へアクセスしてみましょう。
成功すればPlayの画面が表示されるはずです。

画面に表示されているバージョンを確認して2.3.9になっていることを確認しましょう。

You’re using Play 2.3.9

以上