Scalatra Scala Service giter8 Template

Scala Dec 31, 2018

Lets stand up a new Scala service from scratch. For this walk-through, I used Ubuntu 18.10.

Basic requirements:

  • JDK8 sudo apt install openjdk-8-jdk Using version "1.8.0_191"
  • Scala Build Tool (I chose to download and manually add to my path - but the SBT docs recommend getting it via apt). Using version 1.2.1

What we will get from this guide:

A basic Scalatra service that renders a basic html page using Twirl for server-side templating (Twirl is from Play 2) – It wont have much out of the gate other than the ability to define a route, render some html, and do logging (its default test verifies we can get a 200)

Create a Scalatra project using giter8 Template

Following the tutorial -

organization [com.example]: org.bitbucket.honstain
name [My Scalatra Web App]: ToyInventoryApp
version [0.1.0-SNAPSHOT]: 
servlet_name [MyScalatraServlet]: ToyInventory
package []:
scala_version [2.12.6]: 
sbt_version [1.2.1]: 
scalatra_version [2.6.4]: 

Template applied in /home/dev/Desktop/scalatra-blog/./toyinventoryapp

Sanity check  that we can build:

[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings for project toyinventoryapp from build.sbt ...
[info] Set current project to ToyInventoryApp (in build file:/home/dev/Desktop/scalatra-blog/toyinventoryapp/)
[info] sbt server started at local:///home/dev/.sbt/1.0/server/a4b28a03b2c11993f519/sock

I want to use IntelliJ (so I will demonstrate that, but other options are reasonable), so lets load that now:

It can take a bit for IntelliJ to finish indexing. When you're done you should hopefully see the basic project:

As described in the Scalatra guide, you can now start the app, I showed the IntelliJ example, but you should also try using SBT via the command line.

# Basic start

# Run the application with hot reload

At this stage, we should hopefully have a basic Scalatra app running.

I have shared the public repo with this project on bitbucket