Pedestal Libraries
Pedestal is composed of multiple libraries, and many of these can be used outside of a Pedestal application.
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.7.1"]
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.7.1"}
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. |