play2.6でtemplateやらroutesで覚えのないUnused警告を消したときのメモ
scalacオプションに以下を追加すると、
build.sbt
scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlint")
こんな警告が出た。
sbt.compile
[warn] $HOME/workspace/my-item-search/conf/routes: Unused import
[warn] $HOME/workspace/my-item-search/conf/routes: Unused import
[warn] $HOME/workspace/my-item-search/conf/routes: Unused import
[warn] $HOME/workspace/my-item-search/conf/routes: Unused import
[warn] $HOME/workspace/my-item-search/conf/routes: Unused import
[warn] $HOME/workspace/my-item-search/app/views/footer.scala.html:1: Unused import
[warn] <div class="footer">
[warn] ^
[warn] $HOME/workspace/my-item-search/app/views/header.scala.html:1: Unused import
[warn] @(headerTitle: String)(userName: String)
[warn] ^
[warn] $HOME/workspace/my-item-search/app/views/index.scala.html:1: Unused import
[warn] @*
[warn] ^
[warn] $HOME/workspace/my-item-search/app/views/main.scala.html:1: Unused import
[warn] @import controllers.routes
[warn] ^
[warn] $HOME/workspace/my-item-search/app/views/menu.scala.html:1: Unused import
[warn] @(userName: String)
[warn] ^
[warn] $HOME/workspace/my-item-search/app/views/sidebar.scala.html:1: Unused import
[warn] <div class="side-bar">
[warn] ^
[warn] 11 warnings found
以下が参考になる。
- https://github.com/playframework/playframework/issues/7382
- https://github.com/playframework/twirl/issues/105
要するに、viewに関してはデフォルトで↓みたいなのが勝手にimportされているがtemplate内で呼び出してないからUnused警告が出るらしい。
xxx.scala.html
import play.twirl.api._
import play.twirl.api.TemplateMagic._
解決策は、まずbuild.sbtに以下を追記する。
build.sbt
TwirlKeys.templateImports := Seq.empty
しかし、こうするとviewのroutesとかHtmlタイプとかがエラーになるので、それぞれ個別に
importする必要がある。
main.scala.html
@import controllers.routes
@import play.twirl.api.Html
routesの警告に関しては、AssetがUnusedらしい。
build.sbtとroutesのassetsを下記のようにする。
build.sbt
import play.sbt.routes.RoutesKeys
RoutesKeys.routesImport := Seq.empty
routes.
GET /assets/*file controllers.Assets.at(file)
で、scala.htmlはこんな感じにする。
main.scala.html
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
元々は↓のようにしていました。
build.sbt
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
main.scala.html
<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
詳細は以下を参照。