13
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

EclipseでPlay Framework 2.6 (Java) の環境構築

Play Framework 2.6 (Java) の新規プロジェクトを生成して、Eclipseにインポートするまでの手順まとめです。v2.5.xまで使っていたactivatorコマンドはEOLを迎えたので、v2.6.x以降はsbt1を直接使います。

事前条件

  • Java 1.8
  • sbt v0.13.13以降
  • Eclipse インストールされていること

sbtはMacの場合Homebrewで、Windowsの場合ここからでインストールしてください。既にsbtが入っている場合、aboutオプションでバージョン確認が可能です。

$ sbt about
=> [info] This is sbt 1.0.4

プロジェクト作成

sbt new [テンプレート名] で新規プロジェクトを作成します。プロジェクト名やScalaのバージョンなどを聞かれますが、何も入れずにEnterを押せば[]内のデフォルト値が採用されます。

$ sbt new playframework/play-java-seed.g8
[info] Set current project to play (in build file:〜〜〜)

This template generates a Play Java project

name [play-java-seed]:
organization [com.example]:
scala_version [2.12.3]:
play_version [2.6.7]:
sbt_version [1.0.2]:

sbt runでアプリが起動し、http://localhost:9000 から稼働確認ができます(初回実行の場合、ライブラリを落とすので時間がかかる)。

Eclipse用の設定追加

project/plugins.sbtにプラグイン設定を追加。

plugins.sbt
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.2")

次に、build.sbtにEclipse用の設定を追加。

build.sbt
EclipseKeys.preTasks := Seq(compile in Compile, compile in Test)
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)

Eclipseにインポート

Eclipse用の.classpathと.projectファイルを生成。

$ sbt eclipse

これでEclipseにインポート (File > Import > Existing Projects into Workspace) できるようになります。ただ、こうしてインポートした状態だと、view (*.scala.html) から生成されたクラスをEclipseが参照しないのでControllerでコンパイルエラーが出ます。これを解消するため、追加でビルドパスを設定します。

  1. Eclipse上でプロジェクトを右クリック > Build Path > Configure Build Path...
  2. LibraryタブからAdd Class Folderを選択
  3. 開いたダイアログでtarget/scala-2.12/classesにチェックを入れてOK

スクリーンショット 2017-12-02 13.47.20.png


  1. Scala向けのビルドツール。activatorは内部的にsbtを利用していた 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
13
Help us understand the problem. What are the problem?