Lets stand up a new Scala service from scratch. For this walk-through, I used Ubuntu 18.10.
sudo apt install openjdk-8-jdkUsing version "1.8.0_191"
- Scala Build Tool https://www.scala-sbt.org/ (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) – http://scalatra.org/guides/2.6/views/twirl.html 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 - http://scalatra.org/getting-started/first-project.html
organization [com.example]: org.bitbucket.honstain name [My Scalatra Web App]: ToyInventoryApp version [0.1.0-SNAPSHOT]: servlet_name [MyScalatraServlet]: ToyInventory package [com.example.app]: org.bitbucket.honstain.app 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 jetty:start # Run the application with hot reload ~;jetty:stop;jetty:start
At this stage, we should hopefully have a basic Scalatra app running.
I have shared the public repo with this project on bitbucket https://bitbucket.org/honstain/scalatra-example-blog/commits/9fe71828eee4e5942b8f48a8add691a26dfd9333