Skip to content
A Leiningen 2 plugin to work with servlet-based webapps
Clojure Java ColdFusion PHP
Latest commit 2be0615 Jan 19, 2015 @kumarshantanu fix doc typo
Failed to load latest commit information.
adapter-jetty7 bump version to 0.4.1 Jan 17, 2015
adapter-jetty8
adapter-jetty9 bump version to 0.4.1 Jan 17, 2015
adapter-tomcat7 bump version to 0.4.1 Jan 17, 2015
adapter-tomcat8 bump version to 0.4.1 Jan 17, 2015
lein-template bump version to 0.4.1 Jan 17, 2015
plugin
.gitignore ignore pom.xml.asc Jan 17, 2015
CHANGES.md
README.md bump version to 0.4.1 Jan 17, 2015
project.clj
sample.project.clj bump version to 0.4.1 Jan 17, 2015

README.md

lein-servlet

A Leiningen 2 plugin to work with servlet-based webapps.

You may use this plugin to launch a servlet-based webapp using a suitable servlet engine adapter, or generate a war/uberwar file. Adapters for Jetty-7, Jetty-8, Jetty-9, Tomcat-7 and Tomcat-8 are provided.

NOTE: This plugin is meant only to work with servlets based web apps. For idiomatic web development using Clojure you should consider lein-ring and ring.

Usage

It takes multi-line configuration in project.clj to use lein-servlet. For example, a minimal configuration might look like this:

:plugins [[lein-servlet "0.4.1"]]
:servlet {:deps    [[lein-servlet/adapter-jetty7 "0.4.1"]]
          :webapps {"/" {:servlets {"/*" com.myapp.WebServlet}
                         :public   "public"}}}

Given the servlet class exists in classpath and the directory public exists too, when you run lein servlet run, it starts the Jetty servlet container with the webapp at http://localhost:3000/

Creating a project via templates

In many cases you may be using lein-servlet templates that are actually project skeletons of several types.

You do not need to have any plugin installed to create a template. Unless you already have a version of lein-servlet/lein-template, the following commands automatically download the latest version for use.

The command to create lein-servlet project skeletons is:

lein new lein-servlet [flavor] project-name

Both flavor and project-name are placeholders for the actual names to be used. Note that flavor is optional and indicates a project type. Currently the flavor can be either of quercus, railo and struts. See examples:

$ lein new lein-servlet foo          # creates a simple Clojure/servlet webapp
$ lein new lein-servlet quercus foo  # creates a Clojure/PHP webapp that uses Quercus
$ lein new lein-servlet railo foo    # creates a Clojure/CFML webapp that uses Railo
$ lein new lein-servlet struts foo   # creates a Clojure/Java webapp that uses Struts1

Regular configuration

The recommended use of lein-servlet is as a project-level plugin. Put [lein-servlet "0.3.0"] into the :plugins vector of your project.clj.

If you must use this as a user-level plugin, put [lein-servlet "0.4.1"] into the :plugins vector of your :user profile.

For a detail list of all possible configuration options please check the file sample.project.clj.

Command-line usage

To view the configured servlet engine:

$ lein servlet engine

To start all configured webapps using the configured servlet engine:

$ lein servlet run  # opens server homepage in browser

To generate a WAR file:

$ lein servlet war     # generates target/<filename>.war file with sources only
$ lein servlet uberwar # generates target/<filename>.war file with dependencies

Contributors

  • Shantanu Kumar (author)
  • Sean Corfield
  • Jürgen Hötzel (Github user juergenhoetzel)

Getting in touch

Leiningen mailing list: https://groups.google.com/group/leiningen/

Twitter: https://twitter.com/kumarshantanu

E-mail: kumar.shantanu(at)gmail.com

License

Copyright © 2012-2015 Shantanu Kumar and contributors

Distributed under the Eclipse Public License, the same as Clojure.

Something went wrong with that request. Please try again.