A Leiningen template for projects using Luminus.
The template initializes a base Luminus application.
Luminus requires Leiningen version 2.5.3+
The Luminus template ships out of the box with your latest Leiningen. Run the following command to create a new Luminus project which uses the default profile template:
lein new luminus <your project name>
However, if you would like to attach further functionality to your template you can append profile hints for these extended features:
Profile | Category | Description | Compare |
---|---|---|---|
+aleph | server | adds the Aleph server | diff |
+http-kit | server | adds the fast HTTP Kit web server to the project | diff |
+immutant | server | adds the immutant web server to the project. Note: this project is no longer funded/maintained | diff |
+jetty | server | adds the jetty web server to the project | diff |
+undertow | server | adds the ring-undertow server. This is a default server. | diff |
+h2 | database | adds db.core namespace and H2 database dependencies | diff |
+postgres | database | adds db.core namespace and PostgreSQL database dependencies | diff |
+mysql | database | adds db.core namespace and MySQL/MariaDB database dependencies | diff |
+mongodb | database | adds support for MongoDB using the Monger library | diff |
+datomic | database | adds support for the Datomic database | diff |
+sqlite | database | adds support for the SQLite database | diff |
+xtdb | database | adds support for the XTDB database | diff |
+graphql | service API | adds GraphQL support using Lacinia | diff |
+swagger | service API | adds support for Swagger-UI | diff |
+service | service API | removes static assets and the layout, adds Swagger support | diff |
+cljs | ClojureScript | adds ClojureScript support to the project | diff |
+reagent | ClojureScript | adds ClojureScript support with Reagent to the project along with an example | diff |
+re-frame | ClojureScript | adds ClojureScript support with re-frame to the project along with an example | diff |
+kee-frame | ClojureScript | adds kee-frame to the project | diff |
+shadow-cljs | ClojureScript | adds shadow-cljs support to the project, replacing the default cljsbuild and figwheel setup | diff |
+boot | misc | causes the project to run with Boot instead of Leiningen | diff |
+auth | misc | adds Buddy dependency and authentication middleware | diff |
+auth-jwe | misc | adds Buddy dependency with the JWE backend | diff |
+oauth | misc | adds OAuth dependency | diff |
+hoplon | misc | adds ClojureScript support with Hoplon to the project | diff |
+cucumber | misc | adds support for browser based UI testing with Cucumber and clj-webdriver | diff |
+sassc | misc | adds support for SASS/SCSS files using SassC command line compiler | diff |
+war | misc | adds support of building WAR archives for deployment to servers such as Apache Tomcat (should NOT be used for Immutant apps running on WildFly) | diff |
+site | misc | creates template for site using the specified database (H2 by default) and ClojureScript | diff |
+kibit | misc | adds lein-kibit plugin | diff |
+servlet | misc | adds middleware for handling Servlet context | diff |
+basic | misc | generates a bare bones luminus project | diff |
+async | misc | support for async (= 3 argument) ring handlers |
To add a profile simply pass it as an argument after your application name, e.g.:
lein new luminus myapp +cljs
You can also mix multiple profiles when creating the application, e.g.:
lein new luminus myapp +auth +postgres
To build as a executable Java ARchive (JAR) standalone, run the following command:
lein uberjar
Or if using the +boot profile:
boot uberjar
To run the resulting standalone executable .jar
file, do as you would with any other:
user$ java -jar target/myapp.jar
15-Sep-14 16:06:21 APc47d.4f39.65e6.uhn.ca INFO [myapp.handler] -
-=[myapp started successfully]=-
16:06:21.685 INFO [org.projectodd.wunderboss.web.Web] (main) Registered web context /
15-Sep-14 16:06:21 APc47d.4f39.65e6.uhn.ca INFO [myapp.core] - server started on port: 3002
The app can be stress tested by running the Apache benchmark command:
ab -c 10 -n 1000 http://127.0.0.1:3000/
The memory and CPU usage can be inspected by running either jconsole
or jvisualvm
and attaching them to a running Luminus server.
Using async ring handlers is possible but adds another layer of complexity. If things go wrong you'll see a blank screen, possibly without any error message.
The server (undertow, jetty, servlet) and every middleware in the chain has to support async request handling.
To enable: add :async? true
to your config maps.
Tested combinations:
There is also a public comparison chart of the common templates.
Copyright © 2016 Dmitri Sotnikov
Distributed under the MIT License.
Can you improve this documentation? These fine people already did:
Dmitri Sotnikov, Yogthos, Nikita Fedyashev, supersymmetry, dmitri.sotnikov@gmail.com, Randy Terbush, grmble, Jeremy Anderson, Nikola Peric, Abhinav Omprakash, David Goldfarb, JC, Ben Sima, Daniel Manila, Kevin Greene, Nik Peric, Coby Tamayo, Max Furman, Chinmay Deshpande, Joe Hosteny, Sean Brewer, Abhinav Sharma, Shigeaki Matsumura, Mike Li, Logan Lowell, Jonathan Chen & Jonathon McKitrickEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close