Any serious work will need a build tool of some sort. If you use lein, it comes 
with its own dependency management and config. Same for boot (as far as I 
know). So in practice, if I use tools.deps, I've now doubled the number of 
tools I depend on. I need lein and tools.deps.

At World Singles Networks, we’ve just completed our shift from a complex 
Boot-based pipeline to just clj/deps.edn and a small shell script to make the 
invocation simpler. We originally started with Leiningen (back in 2011). We 
switched to Boot at the end of 2015 (you can read why, and details about our 
journey, here: http://corfield.org/blog/categories/boot/ ). We still have two 
small Boot tasks, related to legacy projects, that I will likely convert this 
week. I’ll write a lengthy blog post (or two or more) about why we made this 
switch and what pros and cons we encountered, but I’d sum it up as 
“simplicity”. We are now dependent solely on a small, focused tool that is 
“standard” with Clojure. For deployment, we still build uberjars (using my fork 
of depstar that fixes a couple of bugs, and adds “thin” JAR support). We start 
those JARs with java -cp path/to/the.jar clojure.main -m our.namespace which is 
pretty much what we were doing with Boot (we used java -jar path/to/the.jar -m 
our.namespace but switched to the slightly longer form just before we migrated 
to clj/deps.edn). We use Cognitect’s test-runner, we use Olical’s depot (to 
track outdated dependencies).

I’ve published JARs to Clojars using just clj -Spom, clj -A:jar (invoking 
depstar), and mvn deploy:deploy-file (the only thing I actually use Maven for!).

As I’ve worked on various Contrib libraries (that already have pom.xml and use 
Maven on the CI system), I’ve removed the “convenience” project.clj files that 
were originally added to make working with those projects easier (e.g., to 
start an nREPL server, to run tests with multiple versions of Clojure etc) and 
replaced them with deps.edn files – and by using aliases for different Clojure 
versions, I can do multi version testing like this: for v in 1.6 1.7 1.8 1.9 
master; do clojure -A:test:$v; done

I’ve published my .clojure/deps.edn file on GitHub 
https://github.com/seancorfield/dot-clojure as an example of tooling 
integration with a clj-based workflow: starting nREPL servers, running 
Eastwood, benchmarking, testing, building JAR and uberjar files, even creating 
new clj-based projects.

If you’re happy with Leiningen or Boot, there’s no reason for you to switch. 
You can still adopt the new deps.edn format and use 
https://github.com/RickMoynihan/lein-tools-deps or 
https://github.com/seancorfield/boot-tools-deps to integrate it, if you wish.

One important caveat to consider right now is that there is no support for 
Windows for clj/deps.edn projects (I develop on both macOS and Windows 10 – I 
just use WSL with Ubuntu on the latter – and at work everything is deployed to 
Linux).

Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

________________________________
From: clojure@googlegroups.com <clojure@googlegroups.com> on behalf of Didier 
<didi...@gmail.com>
Sent: Saturday, November 3, 2018 8:46:45 PM
To: Clojure
Subject: What's the end goal for tools.deps?

I read the rationale, and I understand that we needed a way to bundle depencies 
for clj and clojure cli. But in practice, I'm seeing a lot of people move to 
it, away from boot or lein, and I fail to see what the end goal really is?

Any serious work will need a build tool of some sort. If you use lein, it comes 
with its own dependency management and config. Same for boot (as far as I 
know). So in practice, if I use tools.deps, I've now doubled the number of 
tools I depend on. I need lein and tools.deps.

For me, it seems the benefit would be around unified dependency config format 
and maybe reuse of the resolver logic. Like say Lein and Boot and all tools 
needing to specify dependencies adopted the format of tools.deps. This would be 
nice, especially for source based dependencies, and dealing with transitive 
dependencies in such case.

So, is there any hope/work to adopt the format in Lein and Boot? Or what is the 
end goal otherwise?

Regards

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
clojure+unsubscr...@googlegroups.com<mailto:clojure+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to