I'm still new to Clojure, but I think I'm getting a handle on the language. I am a little confused about what development tools to use. I know Leiningen is a solid tool, but it's based on an older way of doing things. The Clojure CLI as I understand it is the new and supported method. I've seen the clj-new tool and the deps-new tool. I'm not sure I understand the difference between the two. Is there a recommended build tool for Clojure development?
I've been using the official Clojure CLI tools for projects for a while now, and it's able to do everything I've needed so far I recommend looking at https://clojure.org/guides/tools_build if you haven't already
Technically Lein and Clojure CLI + tools.build give you the same capabilities, with one major difference: Lein has a lot of stuff built-in (starting the REPL, building JARs, integration with the test runner). CLI + tools deps + tools build is more of a "some assembly required" approach
This guide talks about why there are two tools and how you might choose: https://clojure-doc.org/articles/tutorials/getting_started/
(disclaimer: when I started with Clojure there was only Leiningen; at work we switched from lein to boot in 2015 and from boot to the Clojure CLI in 2018)
I wasn't expecting such quick replies. Thank you! @seancorfield and @skynet thank you for the resource links. I will definitely check them out.
Its worth remembering that code is the same regardless of Leningen or Clojure CLI. It is possible to use both tools for the same project, although it would mean managing library dependencies in two config files The last two commercial companies I worked for used Clojure CLI projects.
If using Clojure CLI, then it is very valuable to have a user level deps.edn file with the community tools that extend the Clojure CLI tool. Sean and I have example you can use or copy
https://practical.li/clojure/
Thanks for the resource, @jr0cket! Yeah, I've worked through all of the Exercism Clojure problems and they are set up to use both Leiningen and Clojure CLI.
@jr0cket, I'm probably missing something, but you mentioned an example, but the link you provided goes to the top-level guide. Is there a specific link I should take a look at?
https://practical.li/clojure/clojure-cli/practicalli-config/
Mine is here, for comparison, https://github.com/seancorfield/dot-clojure but mine isn't maintained for the public -- just for my own usage, and some of it is tied into my VS Code / Calva / Joyride setup here https://github.com/seancorfield/vscode-calva-setup
Awesome! Thank you again. I'm working on going deeper into Clojure and this build/tooling space is an area that I have been avoiding.