The mature choice for Clojure teams

Private Repository for Leiningen Projects

Host private Clojure libraries for Leiningen. Add one entry to project.clj, then lein deploy. Simple, published pricing.

Simple project.clj configuration
Works with Clojars for public dependencies

14 days free. No credit card required.

project.clj
(defproject com.acme/backend "2.1.0"
  :dependencies [[org.clojure/clojure "1.11.1"]
                 [com.acme/shared-lib "1.5.3"]
                 [com.acme/auth-service "3.0.1"]]

  :repositories [["cloudrepo"
                  {:url "https://your-org.mycloudrepo.io/repositories/your-repo"
                   :username :env/cloudrepo_username
                   :password :env/cloudrepo_token
                   :sign-releases false}]])

Included on every plan

Plans differ only in storage and transfer allowance.

Coming soon: Access log

Leiningen vs deps.edn: Choose the Right Tool

CloudRepo supports both build tools equally well - choose based on your needs

Aspect Leiningen deps.edn
Build Tool Leiningen (lein) Clojure CLI (clj/clojure)
Config File project.clj deps.edn
Philosophy All-in-one build tool Composable tools approach
Plugin System Rich plugin ecosystem Tools as libraries
Production Builds Built-in uberjar tools.build or depstar
REPL Integration lein repl clj with aliases
Maturity Since 2010 Since 2017
Learning Curve Familiar to Java devs More Clojure-idiomatic

Use Leiningen When:

  • You have existing Leiningen projects
  • You need the mature plugin ecosystem
  • Team is familiar with Maven/Gradle concepts
  • You want all-in-one build tool simplicity

Use deps.edn When:

  • Starting new Clojure projects
  • You prefer composable tools philosophy
  • Working with monorepos and local deps
  • Need git dependencies support

CloudRepo Works Perfectly With Both

Same repository, same libraries, your choice of build tools

Every plan includes human support and SSO. See pricing

Built for professional Leiningen workflows

Everything you need for enterprise Clojure development with Leiningen

Battle-Tested Maven Format
Leiningen uses standard Maven repositories under the hood. CloudRepo provides rock-solid Maven hosting with perfect Leiningen compatibility.
Project.clj Simplicity
Simple repository configuration in project.clj. Deploy with 'lein deploy' and pull dependencies automatically - just works.
Plugin Ecosystem
Full support for the mature Leiningen plugin ecosystem. Use lein-ring, lein-cljsbuild, and all your favorite plugins.
Uberjar Deployment
Deploy standalone uberjars for production. Perfect for traditional JVM deployments and Docker containers.
Enterprise Security
API tokens for CI/CD and team-based access controls for enterprise compliance.

Quick Leiningen Setup Guide

Configure project.clj and start deploying private libraries in minutes

1

Configure project.clj for CloudRepo

Add CloudRepo as a private repository in your Leiningen project configuration.

project.clj
(defproject com.mycompany/private-lib "1.2.3"
  :description "Private Clojure library"
  :dependencies [[org.clojure/clojure "1.11.1"]
                 [com.mycompany/shared-lib "2.0.1"]]

  ;; One entry fetches dependencies and deploys
  :repositories [["cloudrepo" {:url "https://your-org.mycloudrepo.io/repositories/your-repo"
                               :username :env/cloudrepo_username
                               :password :env/cloudrepo_token
                               :sign-releases false}]])
2

Set Authentication Credentials

Leiningen reads the login from the environment. CLOUDREPO_USERNAME is the email address of the account that created your repository token, and CLOUDREPO_TOKEN is the token itself, not your password. Set both from your secret store or your CI system.

.github/workflows/publish.yml
env:
  CLOUDREPO_USERNAME: you@example.com
  CLOUDREPO_TOKEN: ${{ secrets.CLOUDREPO_TOKEN }}
~/.lein/profiles.clj
;; Alternative: keep the login in a file only you can read (chmod 600), and
;; leave :username and :password out of the project.clj entry.
{:auth {:repository-auth {#"https://your-org\.mycloudrepo\.io/.*"
                          {:username "you@example.com"
                           :password "YOUR_REPOSITORY_TOKEN"}}}}
3

Deploy with Leiningen

Use standard Leiningen commands to deploy your libraries to CloudRepo.

Terminal
# Deploy the library
lein deploy cloudrepo

# Deploy a jar with explicit coordinates
lein deploy cloudrepo com.mycompany/my-lib "1.2.3" target/my-lib-1.2.3.jar

# Check dependencies
lein deps :tree

# Force update of SNAPSHOT dependencies
lein -U deps

Need advanced configuration?

Check out our comprehensive Leiningen documentation for profiles, plugins, and enterprise setups.

Perfect for every Leiningen use case

From legacy systems to modern microservices, CloudRepo scales with your needs

Enterprise Clojure Teams

Share proprietary Leiningen libraries across departments. Perfect for organizations with established Leiningen workflows.

Legacy System Migration

Gradually modernize Leiningen projects. Host both old and new libraries while migrating at your own pace.

Clojure Web Applications

Deploy Ring/Compojure applications as uberjars. Perfect for traditional deployment pipelines and Docker containers.

Mixed Build Tool Teams

Support developers using both Leiningen and deps.edn. One repository for all your Clojure build tools.

Frequently asked questions

Everything you need to know about CloudRepo for Leiningen

Why use CloudRepo instead of Clojars for private Leiningen libraries?
Clojars is the community repository for open-source Clojure libraries but doesn't support private repositories. CloudRepo provides private repository hosting that works perfectly with Leiningen, offering access controls and team management. Use Clojars for public dependencies and CloudRepo for your proprietary code.
How does CloudRepo compare to self-hosting Nexus or Archiva for Leiningen?
Self-hosting means maintaining servers, security patches, backups and TLS certificates. CloudRepo runs the repository for you, with automatic backups.
Can I use both Leiningen and deps.edn with the same CloudRepo repository?
Absolutely! CloudRepo hosts standard Maven repositories that work with all Clojure build tools. Your team can use Leiningen for some projects and deps.edn for others, all sharing the same private libraries. This is perfect for gradual migrations or mixed-tool environments.
How do I migrate from JFrog Artifactory to CloudRepo for Leiningen projects?
Both use the Maven repository format. Move your JARs and POM files from Artifactory to CloudRepo (we can help with bulk imports), then update the repository URLs and credentials in project.clj.
Should I use Leiningen or deps.edn for new Clojure projects?
Leiningen is perfect if you need its mature plugin ecosystem, prefer an all-in-one build tool, or have team members familiar with Maven/Gradle. Choose deps.edn for newer projects that embrace the composable tools philosophy. CloudRepo supports both equally well, so you can choose based on your project needs, not repository limitations.
Does CloudRepo support Leiningen plugins and templates?
Yes! CloudRepo can host Leiningen plugins and templates just like any other JAR artifact. You can create private plugins for your organization and share them through CloudRepo. This includes lein-ring for web apps, lein-cljsbuild for ClojureScript, and custom templates for project scaffolding.

Why JVM teams choose CloudRepo

  • Perfecto
  • GoodRx
  • Paravision

“We were industrializing our partner-startup's codebase, and they were missing an artifact repository. We needed a private Maven repository, and we didn't want to set it up ourselves on AWS. We felt that CloudRepo was priced nicely with a good feature set. In my experience, managing a private repository takes maintenance (cleaning up snapshots, resizing disks, upgrades...) and I didn't want my team to waste time with that.”

Michael Técourt
Michael Técourt
Lead Architect, Dreev

“We use CloudRepo because we needed a closed source Maven Repository that could be easily managed to provide/restrict access to our clients, didn't cost the world to use, and that wouldn't require significant effort to set up/maintain.”

Paul Jervis
Paul Jervis
Director, Twelve Oaks Software

Perfect Maven Repository Compatibility

Leiningen uses Maven repositories under the hood - CloudRepo provides Maven hosting

What This Means For You

  • 100% compatibility with all Leiningen versions
  • Share libraries between Leiningen, deps.edn, Maven, and Gradle projects
  • Standard POM metadata and dependency resolution
  • SNAPSHOT versions with proper metadata handling

Supported Artifacts

  • Standard JARs and uberjars
  • Leiningen plugins and templates
  • Source JARs and documentation
  • POM files with complete metadata

Example: Using CloudRepo with Leiningen Profiles

project.clj
(defproject com.acme/service "1.0.0"
  :dependencies [[org.clojure/clojure "1.11.1"]]

  ;; Environment-specific repositories
  :profiles {:dev {:repositories [["cloudrepo-dev"
                                   {:url "https://your-org.mycloudrepo.io/repositories/dev"
                                    :username :env/cloudrepo_username
                                    :password :env/cloudrepo_token}]]}

             :prod {:repositories [["cloudrepo-prod"
                                    {:url "https://your-org.mycloudrepo.io/repositories/prod"
                                     :username :env/cloudrepo_username
                                     :password :env/cloudrepo_token
                                     :sign-releases false}]]}})

Start hosting private Leiningen libraries today

14 days free. No credit card required. Setup in 5 minutes.

Perfect Leiningen support
Works with Clojars