Skip to content
Lift Framework
Scala JavaScript Java CSS HTML Shell
Find file
Latest commit 40c1389 May 4, 2016 @Shadowfiend Shadowfiend Merge pull request #1789 from lift/tcn_issue_1788
Use S.appendGlobalJs for JavaScript in XmlOrJsCmd.outSpan
Failed to load latest commit information.
artwork Losslessly compressed Lift .png images. Nov 13, 2012
core Correct omniauth-related specs. Mar 15, 2016
docs Fix CSS selector example docs based on tests. Jun 18, 2014
persistence Updated the comment for Record.asJValue Apr 28, 2016
project Bump specs2 to 3.7, scalaz to 7.2.0, fix everything. Feb 29, 2016
web Use S.appendGlobalJs for JavaScript in XmlOrJsCmd.outSpan May 3, 2016
.credentials.enc Add encrypted credentials for publishing snapshots. Nov 21, 2015
.gitignore Add 'X-Requested-With' header to liftVanilla Dec 26, 2015
.travis.yml Add soem gitter notification settings. Apr 9, 2016
CONTRIBUTING.md Clarify request "by the committers" for non-c solns. Apr 16, 2016
LICENSE.txt Add a LICENSE file that contains the full text of the Apache 2.0 lice… Oct 19, 2011
README.md Add 'X-Requested-With' header to liftVanilla Dec 26, 2015
build.sbt Dependency version bumps in advance of 3.0-RC1. Feb 23, 2016
contributors.md contributors.md update Jan 7, 2015
dexy.conf Add dexy config to output stuff into target/docs. Jun 11, 2014
dexy.yaml Dexy runs generated tests for selector examples. Jun 18, 2014
dexyplugin.yaml Add dexy config to output stuff into target/docs. Jun 12, 2014
liftsh Correct liftsh bootstrapping for new sbt. Jun 13, 2015
liftsh.cmd Add a warning comment to the top of liftsh.cmd. Jun 13, 2015
npmsh Added .jshintrc file Dec 30, 2015
travis.sh Added .jshintrc file Dec 30, 2015
unsafePublishLift.sh update build script to build 3.0 from master Jan 17, 2015

README.md

The Lift Web Framework

Build Status

Lift is the most powerful, most secure web framework available today. There are Seven Things that distinguish Lift from other web frameworks.

Lift applications are:

  • Secure -- Lift apps are resistant to common vulnerabilities including many of the OWASP Top 10
  • Developer centric -- Lift apps are fast to build, concise and easy to maintain
  • Scalable -- Lift apps are high performance and scale in the real world to handle insane traffic levels
  • Interactive like a desktop app -- Lift's Comet support is unparalled and Lift's ajax support is super-easy and very secure

Because Lift applications are written in Scala, an elegant JVM language, you can still use your favorite Java libraries and deploy to your favorite Servlet Container and app server. Use the code you've already written and deploy to the container you've already configured!

Pull Requests

We will accept pull requests into the Lift codebase if the pull requests meet the following criteria:

  • The request handles an issue that has been discussed on the Lift mailing list and whose solution has been requested (and in general adheres to the spirit of the issue guidelines outlined in CONTRIBUTING.md).
  • The request represents one or more of the following:
    • Documentation including ScalaDoc comments in code
    • Example code
    • Small changes, enhancements, or bug fixes to Lift’s code
  • The request includes a signature at the bottom of the /contributors.md file.

For more details, see CONTRIBUTING.md.

Getting Started

You can create a new Lift project using your favorite build system by adding Lift as a dependency:

sbt 0.12.1

Create or update your project/plugins.sbt file with the xsbt-web-plugin:

libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-web-plugin" % ("0.12.0-0.2.11.1"))

Then, add the plugin and Lift to your build.sbt file:

seq(webSettings :_*)

libraryDependencies ++= {
    val liftVersion = "2.5-RC1"
    Seq(
              "net.liftweb"       %% "lift-webkit" % liftVersion % "compile",
              "net.liftmodules"   %% "lift-jquery-module" % (liftVersion + "-2.2"),
              "org.eclipse.jetty" % "jetty-webapp"        % "8.1.7.v20120910"  % "container,test",
              "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container,test" artifacts Artifact("javax.servlet", "jar", "jar"),
              "ch.qos.logback" % "logback-classic" % "1.0.6"
    )
}

You can learn more on the cookbook.

Maven:

You can use one of the several archetypes -- lift-archetype-blank, lift-archetype-basic, lift-archetype-jpa-basic -- to generate a new Lift project. You must set archetypeRepository and remoteRepositories to http://scala-tools.org/repo-releases or http://scala-tools.org/repo-snapshots, depending on whether you are using a release or the latest SNAPSHOT.

Or, you can add Lift to your pom.xml like so:

<dependency>
  <groupId>net.liftweb</groupId>
  <artifactId>lift-mapper_${scala.version}</artifactId>
  <version>2.5.1</version>
</dependency>

Where ${scala.version} is 2.9.1 etc. For scala 2.10.x, which is binary compatible, you just use 2.10, and that will work for 2.10.0 ,2.10.1 ,2.10.2

You can learn more on the wiki.

Project Organization

The Lift Framework is divided into several Git repositories, which in turn are divided into several components that are published independently. This organization enables you to use just the elements of Lift necessary for your project and no more.

This Repository

This repository, framework, contains the following components:

core

Core elements used by Lift projects. If you wish to reuse some of Lift's helpers and constructs, such as Box, this component may be all you need. However, a web application will most likely require one or more of Lift's components.

web

This component includes all of Lift's core HTTP and web handling. Including lift-webkit in your build process should be sufficient for basic applications and will include lift-core as a transitive dependency.

persistence

This component includes Mapper and Record, Lift's two ORMs. While you needn't use either and can use the ORM of your choice, Mapper and Record integrate nicely with Lift's idioms. Mapper is an ORM for relational databases, while Record is a broader ORM with support for both SQL databases and NoSQL datastores.

Other Repostories

There are a variety of other repositories available on the Lift GitHub page. While many are concerned with building Lift or are build program archetypes, there are two you will probably encounter fairly frequently as a Lift user:

modules

The modules repository contains the many add-on modules that are part of the Lift project. If you don't find a module you need here, consider creating a module and sharing it with the community.

Please note that the modules project does accept pull requests.

examples

The examples repository contains the source code for several example Lift applications, including demo.liftweb.com.

Building Lift

If you simply want to use Lift in your project, add Lift as a dependency to your build system or download the JAR files directly.

If you wish to build Lift from source, check out this repository and use the included liftsh script to build some or all of the components you want.

git clone https://github.com/lift/framework.git
cd framework
./liftsh +update +publish

There is additional documentation on the wiki.

Additional Resources

Homepage

The main Lift website is http://www.liftweb.net. The site contains information on the latest Lift releases, a getting started guide, links to several Lift online books, and additional information.

Mailing List

The Lift Google Group is the official place for support and is an active, friendly community to boot! It can be found at http://groups.google.com/forum/#!forum/liftweb.

Wiki

The Lift wiki is hosted on Assembla and can be found at http://www.assembla.com/spaces/liftweb/wiki/. Anyone is welcome to contribute to the wiki; you must create an account and watch the Lift project in order to create or edit wiki pages.

ScalaDocs

The ScalaDocs for each release of Lift, in additional to the actual JARs, are available on the Liftweb.net site. You can access the source code–based documentation for releases via the site's homepage or by navigating directly to the URL for the specific release. For instance, the Lift 2.5 release can be accessed at http://liftweb.net/api/25/api/.

Cookbook

You can find up-to-date information on the Lift Cookbook

License

Lift is open source software released under the Apache 2.0 license. Generally speaking, you must be a committer with signed committer agreement to submit significant changes to Lift. We do, however, accept some small changes and bugfixes into Lift from non-committers as outlined above in the Pull Requests section.

Continuous Integration

SNAPSHOTs are built by Travis CI

Something went wrong with that request. Please try again.