Private Repository for Leiningen Projects
Host private Clojure libraries with battle-tested Leiningen workflows. Perfect Maven repository compatibility with simple project.clj configuration. Save 90% compared to JFrog Artifactory.
No credit card required • Setup in 5 minutes • Full Maven compatibility
;; project.clj - Your private Leiningen repository
(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://acme.mycloudrepo.io/repositories/maven"
:username :env/cloudrepo_username
:password :env/cloudrepo_password}]]
:deploy-repositories [["releases"
{:url "https://acme.mycloudrepo.io/repositories/maven"
:sign-releases false}]])
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
CloudRepo vs Clojars vs Self-Hosting vs Artifactory
Why CloudRepo is the best choice for private Leiningen repositories
Feature | CloudRepo Best Overall | Clojars Public Only | JFrog Artifactory | Sonatype Nexus | Self-Hosted |
---|---|---|---|---|---|
Starting Price | $79/month | Public only | $150/month + Support | $120/month | Server + maintenance |
Private Repositories | Unlimited | Not available | Limited by plan | Limited by plan | Unlimited |
Egress Fees | Free unlimited | N/A | $0.08-$0.15/GB | $0.09/GB | Bandwidth costs |
Leiningen Support | Native Maven | Native | Full support | Full support | Depends on solution |
Uberjar Support | Excellent | Yes | Yes | Yes | Yes |
Plugin Compatibility | 100% | 100% | 100% | 100% | Varies |
Support | Included free | Community | $100k+/year | $50k+/year | DIY |
Setup Time | < 5 minutes | Instant (public) | Hours to days | Hours | Days |
Maintenance | Zero - Fully managed | N/A | Regular updates | Regular updates | Continuous |
Best For | Private libraries | Public libraries | Large enterprises | Java enterprises | Full control needs |
Real Cost for a Leiningen Development Team
10 developers, 100GB monthly transfer, mature Leiningen workflows
CloudRepo
$948
per year
Private repos + Clojars free
Self-Hosted
$12,000+
per year
Server + DevOps time
JFrog
$121,800
per year
License + support + egress
Nexus
$61,440
per year
License + support + egress
Save $120,852 annually with CloudRepo
Plus hundreds of hours of DevOps maintenance
Built for professional Leiningen workflows
Everything you need for enterprise Clojure development with Leiningen
-
- Leiningen uses standard Maven repositories under the hood. CloudRepo provides rock-solid Maven hosting with perfect Leiningen compatibility.
-
- Simple repository configuration in project.clj. Deploy with 'lein deploy' and pull dependencies automatically - just works.
-
- Full support for the mature Leiningen plugin ecosystem. Use lein-ring, lein-cljsbuild, and all your favorite plugins.
-
- Deploy standalone uberjars for production. Perfect for traditional JVM deployments and Docker containers.
-
- Unlike JFrog and AWS CodeArtifact, we never charge for downloads. Build and test as often as needed without bandwidth costs.
-
- API tokens for CI/CD, team access controls, audit logging, and IP whitelisting for enterprise compliance.
Quick Leiningen Setup Guide
Configure project.clj and start deploying private libraries in minutes
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"]]
;; Private repository for fetching dependencies
:repositories [["cloudrepo" {:url "https://acme.mycloudrepo.io/repositories/maven"
:username :env/cloudrepo_username
:password :env/cloudrepo_password}]
["clojars" "https://repo.clojars.org/"]]
;; Deploy configuration
:deploy-repositories [["releases" {:url "https://acme.mycloudrepo.io/repositories/maven"
:username :env/cloudrepo_username
:password :env/cloudrepo_password
:sign-releases false}]
["snapshots" {:url "https://acme.mycloudrepo.io/repositories/maven-snapshots"
:username :env/cloudrepo_username
:password :env/cloudrepo_password}]])
Set Authentication Credentials
Use environment variables for secure credential management in development and CI/CD.
# Set credentials in your shell
export CLOUDREPO_USERNAME="your-username"
export CLOUDREPO_PASSWORD="your-password"
# Or use API tokens for CI/CD (recommended)
export CLOUDREPO_USERNAME="__token__"
export CLOUDREPO_PASSWORD="your-api-token"
# Alternative: Use ~/.lein/credentials.clj.gpg (encrypted)
{#"https://acme.mycloudrepo.io/repositories/.*"
{:username "your-username"
:password "your-password"}}
# GitHub Actions example
env:
CLOUDREPO_USERNAME: __token__
CLOUDREPO_PASSWORD: ${{ secrets.CLOUDREPO_TOKEN }}
Deploy with Leiningen
Use standard Leiningen commands to deploy your libraries and uberjars to CloudRepo.
# Deploy library to releases repository
lein deploy releases
# Deploy SNAPSHOT version
lein deploy snapshots
# Build and deploy uberjar
lein uberjar
lein deploy releases target/myapp-1.2.3-standalone.jar
# Deploy to specific repository
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 enterprise-grade private repository hosting that works perfectly with Leiningen, offering access controls, audit logs, 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 requires server maintenance, security patches, backup management, SSL certificates, and scaling infrastructure. CloudRepo provides a fully managed solution with 99.9% uptime SLA, automatic backups, global CDN, and enterprise security - all for less than the monthly cost of a cloud server, plus you save countless hours of DevOps work.
- 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?
- Migration is straightforward since both use Maven repository format. Export your JARs from Artifactory, upload them to CloudRepo (we can help with bulk imports), update your project.clj repository URLs, and you're done. Most teams complete migration in under 2 hours and immediately start saving 90% on costs.
- 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.
"We've been using Leiningen for 8 years and weren't ready to migrate everything to deps.edn. CloudRepo gave us a private repository that works perfectly with our existing Leiningen projects. Setup took 10 minutes, and we're saving $7,000/month compared to Artifactory."
Marcus Chen
Engineering Director, Enterprise SaaS
$84,000/year saved
Perfect Maven Repository Compatibility
Leiningen uses Maven repositories under the hood - CloudRepo provides enterprise-grade 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 with environment-specific repositories
(defproject com.acme/service "1.0.0"
:dependencies [[org.clojure/clojure "1.11.1"]]
:profiles {:dev {:repositories [["cloudrepo-dev"
{:url "https://acme.mycloudrepo.io/repositories/dev"
:username :env/cloudrepo_username
:password :env/cloudrepo_password}]]}
:prod {:repositories [["cloudrepo-prod"
{:url "https://acme.mycloudrepo.io/repositories/prod"
:username :env/cloudrepo_username
:password :env/cloudrepo_password}]]}}
;; Deploy to different repos based on version
:release-tasks [["vcs" "assert-committed"]
["change" "version" "leiningen.release/bump-version" "release"]
["deploy" "releases"]
["vcs" "commit"]
["vcs" "tag" "--no-sign"]
["change" "version" "leiningen.release/bump-version"]
["vcs" "commit"]])
Start hosting private Leiningen libraries today
14-day free trial. No credit card required. Setup in 5 minutes.