The Artima Developer Community
Sponsored Link

Categorist's Notes
Scala 2.8.0 + Lift 2.1 + IntelliJ: First Step(s)
by Vlad Patryshev
November 9, 2010
Summary
Transition to Scala 2.8 and Lift 2.1 turned the usual beginner trails impenetrable. It took me more than a week to figure out how to start with Lift on IntelliJ if you use Scala 2.8. Here's my experience.

Advertisement

First, I have to thank Sim for scala/lift/sbt cheatsheet for the Scala 2.7.7 version. So, what is the problem? Scala 2.8.0 is too new, and if you just started learning Scala Lift, and you do not want to go back to 2.7.7, you discover yourself in murky waters of undocumented failures, just because you have to figure out where exactly you should find the new code, how to run sbt, what to do with maven, and, most importantly, how can you start developing anything - probably in IntelliJ, which has the most mature Scala plugin at the time of this writing. I did carefully read (many times) the "sbt cheatsheet" referenced above, and, well, it is good, but the problem is, it is no good with Scala 2.8.0. So this is my story.

The Goal

You are familiar with Scala; you use IntelliJ for development; you are aware of the magic of sbt; now you want to try Lift for your experimental web app. You just bought a Scala Lift book, or you go to Lift Getting Started page, or to another Lift Getting Started page, and you encounter two problems: We have to fix this.

Prerequisites

You probably already have the following installed: You will need the following: Create a script for running sbt, something like
java -Xmx512M -jar \home\yourname\scala\sbt-launch-0.7.4.jar 

Getting the Sample, Making It Run

First, create a directory where we will have our sample code, and check the code out from lift repository:
mkdir oursample
cd oursample
git clone git://github.com/lift/lift_21_sbt.git
Since we want to work in IntelliJ, let's run maven to generate an "archetype" from which we'll build IntelliJ project:
mvn archetype:generate -U -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic -DarchetypeVersion=2.0-scala280-SNAPSHOT -DarchetypeRepository=http://scala-tools.org/repo-snapshots -DremoteRepositories=http://scala-tools.org/repo-snapshots -DgroupId=myFirstLiftApp -DartifactId=lift_21_sbt
See that lift_21_sbt contains the maven file pom.xml. You can already run the sample application via sbt:
cd lift_21_sbt
../../sbt
At prompt, enter
update
and then enter
jetty-run
In a minute or two you will have jetty run the sample app; just check out http://localhost:8080.

But this is not our goal; we want a project for IntelliJ.

Preparing IntelliJ Project

Plugins

You already have Scala plugin. You will need sbt and maven plugins installed and enabled. FileSettingsPlugins is where you find this. After installing sbt plugin, go to SettingsSBT and set the right location of sbt.jar

New Project

FileNew Project...Import project from external model As a root, select the directory .../lift_21_sbt where you have the newly-generated pom.xml file. IntelliJ will discover myFirstLiftApp:lift_21_sbt:1.0-SNAPSHOT; click through Next and Finish. In a minute or two you will see a project created; you could compile it... You are all set. Tweak the code ad libitum, compile... You may want to fix run configuration for scala console: Run -> Edit Configurations -> Edit Defaults; go to the Before launch options, uncheck Make and choose Run SBT Action / jetty-run. Then, when you have your code open, run it; sbt will launch jetty while you have scala console; here I am at loss on why do we need this console. But jetty works!

Creating Deployment War

You are still running sbt, right? type package - and very soon you can find in .../lift_21_sbt/target/scala_2.8.0 a war file (with a weird name). You can deploy this file in Tomcat or Jetty, on your server - it runs the sample Lift app when launched.

Talk Back!

Have an opinion? Readers have already posted 6 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Vlad Patryshev adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Vlad Patryshev was born in Russia, graduated from Leningrad University, majoring in Algebra; His studies combined practical programming with interests in category and topos theory. He spent 7 years at Borland, 3.5 years at Google, and is now at Telenav, investigating the brave new mobile world.

This weblog entry is Copyright © 2010 Vlad Patryshev. All rights reserved.

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use