Play Framework アプリケーション開発を Eclipse で進める時

同じ環境で作業していると、自分がやったことも忘却の彼方になってしまいがちです。

なんかうまく動作している。いつそんな対処をしたのか記憶にない。言われてみれば正攻法を知らない、、ってことがあったのでログ。

何があったのか

「eclipse コマンド発行しても、Eclipse 上でテンプレートの参照がうまく出来ない」

public static Result index() {
	return ok(views.html.sample.render(,,,));
}

の、この “views.html.sample” の部分、Eclipse で見るとなんかエラーになっている。。
けど、アプリ実行していると別に問題なく動作しているようにみえる。。

というお問い合わせをいただきました。

そういえば、何で自分の開発環境はエラーにならずにテンプレートが参照出来ているように見えているのか。

とりあえず、自分の環境だと、Eclipse で読み込んでいるプロジェクトのクラス・パスに、コンパイル済みのテンプレートのパスが設定されている。
※(”target/scala-2.11/…” だったか)

問い合わせ元は当該プロジェクトの新規開発環境構築時のタイミング、
とはいえ自身もつい最近作業マシンの交換をして開発環境構築しているので、既存の設定の類ではないと推測。

エラーが目障りになって無理やり自分でクラスパスを追加したのかな?たかだか1か月前の自分よ。。

毎回クラスパスを手で設定するのは非常に面倒な(というか忘れる)ので、何かしらの設定でいい感じに出来ないか調べようと思った次第です。

解決策

いきなりですが、

EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)

sbteclipse の createSrc に、EclipseCreateSrc.ManagedClasses を追加することで、クラスパスが設定されるみたいです。
エラーが出っぱなしになるのは、EclipseCreateSrc.Default の指定のみで、コンパイル済みのテンプレートのclassが参照出来てません。

ちなみに、sbteclipse 導入済みで eclipse コマンド実行前提で本件記述してしまってますが、

そもそも Eclipse 環境の構築は今からだ、って方は、
下記備忘録残しておくのでご参考までに。

plugins.sbt

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")

最新は 5.2.4(※2019/04/18 現在)の様子。sbt のバージョン等と相談して決めます。

build.sbt

import EclipseKeys._
EclipseKeys.skipParents in ThisBuild := false // サブモジュールを集めただけのような親プロジェクトは無視
EclipseKeys.withSource in ThisBuild := true // クラスの実装を見たい時
EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE18) // Play 2.4 から Java 8
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java // やさしい Java
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources) // ←今回の!

(参照:Using sbteclipse

あとがき

こういった内容を投稿する度に、
「あぁ、この人はドキュメント読まないし、理解せぬまま触っちゃう人だ」
というのがバレますね。

はい、説明書読まずにゲームはじめて、行き詰まったり時とかに説明書眺めて「あぁこうするのか!」というのがよくありました(※最近のタイトルは超親切丁寧)

以上です!

コメント

タイトルとURLをコピーしました