投稿日:
2020年2月21日
最終更新日:
【爆速環境構築】sbtを使ったPlayFramework2.7のプロジェクト作成方法【Java】
YouTubeも見てね♪
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド
Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!
目次
PlayFrameworkプロジェクトを生成しよう
とある案件で、PlayFrameworkプロジェクトを作成する必要が出てきました。
筆者的にはSpringBoot信者なので、PlayFrameworkについては知見が無かったので良い機会なので良い勉強になればと実際に行なった作業をまとめてみようと思います。
The High Velocity
Web Framework
For Java and ScalaPlay Framework – Build Modern & Scalable Web Apps with Java and Scala
作り方
Homebrewでsbtのインストール
まずはhomebrewからsbtをインストールしましょう。
sbtとはビルドツールの一つで、Gradleと同じ立場のツールと言えます。
基本的にPlayFrameworkでは、sbtを使ってビルドや実行を行う事になります。
1
2
3
4
5
6
7
8
9
10
|
==> Installing sbt
==> Downloading https://github.com/sbt/sbt/releases/download/v1.3.8/sbt-1.3.8.tgz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/279553/5f99d580-46ba-11ea-9a43-f963361b7978?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200221%2Fus-east-1%2Fs3%2Faws4_req
######################################################################## 100.0%
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /usr/local/etc/sbtopts
==> Summary
🍺 /usr/local/Cellar/sbt/1.3.8_1: 801 files, 61MB, built in 2 minutes 51 seconds
|
プロジェクトの作成
Scalaの場合
sbt new playframework/play-scala-seed.g8
Javaの場合
sbt new playframework/play-java-seed.g8
今回はJavaで作成する要望なのでこちらで作業を進めていきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[info] Fetched artifacts of
[info] Set current project to withgradle (in build file:/Users/blogenist/work/play/)
[info] Set current project to withgradle (in build file:/Users/blogenist/work/play/)
[info] downloading https://repo1.maven.org/maven2/org/scala-sbt/sbt-giter8-resolver/sbt-giter8-resolver_2.12/0.11.0/sbt-giter8-resolver_2.12-0.11.0.jar ...
[info] downloading https://repo1.maven.org/maven2/com/github/scopt/scopt_2.12/3.7.0/scopt_2.12-3.7.0.jar ...
[info] downloading https://repo1.maven.org/maven2/org/foundweekends/giter8/giter8_2.12/0.11.0/giter8_2.12-0.11.0.jar ...
[info] downloading https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.6/commons-compress-1.6.jar ...
[info] downloading https://repo1.maven.org/maven2/org/tukaani/xz/1.4/xz-1.4.jar ...
[info] [SUCCESSFUL ] com.github.scopt#scopt_2.12;3.7.0!scopt_2.12.jar (603ms)
[info] [SUCCESSFUL ] org.scala-sbt.sbt-giter8-resolver#sbt-giter8-resolver_2.12;0.11.0!sbt-giter8-resolver_2.12.jar (718ms)
[info] [SUCCESSFUL ] org.foundweekends.giter8#giter8_2.12;0.11.0!giter8_2.12.jar (972ms)
[info] [SUCCESSFUL ] org.tukaani#xz;1.4!xz.jar (1072ms)
[info] [SUCCESSFUL ] org.apache.commons#commons-compress;1.6!commons-compress.jar (1312ms)
This template generates a Play Java project
name [play-java-seed]: java-sample
organization [com.example]: jp.blogenist
Template applied in /Users/blogenist/work/play/./java-sample
|
実行
これでプロジェクトのベース作成は完了です!
試しにsbt run
コマンドを実行してみてください。
1
2
3
4
5
|
-- (Running the application, auto-reloading is enabled) ---
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Enter to stop and go back to the console...)
|
すると、上記のログが出力されhttp://localhost:9000/ にアクセスすると画面が表示されます。
とても簡単ですね!
生成ディレクトリ構造
ディレクトリ構成はこのような形になりました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
.
├── app
│ ├── controllers
│ │ └── HomeController.java
│ └── views
│ ├── index.scala.html
│ └── main.scala.html
├── build.sbt
├── conf
│ ├── application.conf
│ ├── logback.xml
│ └── routes
├── logs
│ └── application.log
├── project
│ ├── build.properties
│ ├── plugins.sbt
│ ├── project
│ │ └── target
│ └── target
│ ├── config-classes
│ ├── scala-2.12
│ └── streams
├── public
│ ├── images
│ │ └── favicon.png
│ ├── javascripts
│ │ └── main.js
│ └── stylesheets
│ └── main.css
├── target
│ ├── scala-2.13
│ │ ├── classes
│ │ ├── routes
│ │ ├── twirl
│ │ └── update
│ ├── streams
│ │ ├── _global
│ │ ├── compile
│ │ ├── runtime
│ │ └── web-assets
│ └── web
│ ├── classes
│ └── public
└── test
└── controllers
└── HomeControllerTest.java
32 directories, 14 files
|
JUnitテストの実行方法
sbtコマンドでPlayFrameworkプロジェクトを作成すると、JUnitを用いたテストクラスのサンプルも自動生成されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package controllers;
import org.junit.Test;
import play.Application;
import play.inject.guice.GuiceApplicationBuilder;
import play.mvc.Http;
import play.mvc.Result;
import play.test.WithApplication;
import static org.junit.Assert.assertEquals;
import static play.mvc.Http.Status.OK;
import static play.test.Helpers.GET;
import static play.test.Helpers.route;
public class HomeControllerTest extends WithApplication {
@Override
protected Application provideApplication() {
return new GuiceApplicationBuilder().build();
}
@Test
public void testIndex() {
Http.RequestBuilder request = new Http.RequestBuilder()
.method(GET)
.uri("/");
Result result = route(app, request);
assertEquals(OK, result.status());
}
}
|
sbt testで実行出来ます。
1
2
3
4
5
6
7
8
|
[info] Loading global plugins from /Users/blogenist/.sbt/1.0/plugins
[info] Loading settings for project java-sample-build from plugins.sbt ...
[info] Loading project definition from /Users/blogenist/sample/java-sample/project
[info] Loading settings for project root from build.sbt ...
[info] Set current project to java-sample (in build file:/Users/blogenist/sample/java-sample/)
[info] Compiling 1 Java source to /Users/blogenist/sample/java-sample/target/scala-2.13/test-classes ...
[info] Passed: Total 1, Failed 0, Errors 0, Passed 1
[success] Total time: 4 s, completed 2020/02/21 20:55:43
|
終わりに
以上のようにわずか数分でPlayFramework2.7の環境が整いました。
Springに勝るとも劣らないJavaフレームワークなので、気になる方は勉強してみてはいかがでしょうか♪