Pedestal Libraries

Pedestal is composed of multiple libraries, and many of these can be used outside of a Pedestal application.

Table 1. Pedestal Libraries Summary
Library Name Description Dependencies

pedestal.common

Common functionality and internal utilities.

pedestal.telemetry

Wrapper around Open Telemetry for generating application metrics and tracing.

pedestal.log

Wrapper around Simple Logging Facade for Java [1]

pedestal.common, Dropwizard Metrics, Open Tracing

pedestal.interceptor

Asynchronous interceptor pipeline

pedestal.log, pedestal.common

pedestal.error

Simple error catching for interceptors

pedestal.interceptor, org.clojure/core.match

pedestal.route

HTTP request routing

pedestal.log, pedestal.interceptor, pedestal.common, core.async

pedestal.service

Container-agnostic HTTP service support

pedestal.log, pedestal.telemetry, pedestal.interceptor, pedestal.route, core.async, Java Servlet API, Java WebSocket API, ring/ring-core, several others

pedestal.jetty

Jetty 11 adapter

pedestal.log, pedestal.service, Jetty 11 (server, servlet, alpn-servicer, http2-service, etc.)

pedestal.service-tools

Tools used for local development

pedestal.service, org.clojure/data.xml, ns-tracker

Artifact Coordinates

Pedestal libraries are uploaded to the Clojars repository; files in such a repository are called artifacts.

All pedestal libraries are in the io.pedestal group.

For Leiningen, add this vector to the :dependencies list inside your project.clj:

    [io.pedestal/pedestal.jetty "0.8.0-SNAPSHOT"]

You will adjust the library name as necessary.

For Clojure Deps, add this key and value to the :deps map inside your deps.edn:

 io.pedestal/pedestal.jetty {:mvn/version "0.8.0-SNAPSHOT"}

Git Artifact Coordinates

Pedestal is built using Clojure Deps; this means that it is possible to get access to bleeding-edge versions of the libraries directly from the GitHub repository.

  io.pedestal/pedestal.jetty {:git/url "https://github.com/pedestal/pedestal.git"
                              :git/sha "a0b6a0f7e57710ba6b9f0aa3a62dd1f68e278f43"
                              :deps/root "jetty"}

All Pedestal libraries are in the same repository, :deps/root is used to select the sub-directory containing the library’s code (this matches the library name, without the pedestal. prefix).

:git/url’s are not transitive; when the library you select has dependencies on other Pedestal libraries, those will be accessed as :mvn/version dependencies. You may need to provide additional dependencies to bring in multiple Pedestal libraries.

For example, if you are verifying a bug fix that was split between pedestal.route and pedestal.service, you should introduce dependencies on both libraries; otherwise you may only get half of the bug fix.


1. Also, some deprecated metrics and tracing functionality.