Fork me on GitHub
#clojure-nl
<
2018-09-08
>
lmergen14:09:00

i'm having a godless day, and experimenting migrating a lein-based monorepo to gradle

lmergen14:09:47

compiling clojure works fine, but cider / nrepl <-> gradle integration is not that great

borkdude14:09:21

why are you doing that if I may ask?

borkdude14:09:41

you could start nrepl from your app (e.g. as a ss/component), then it’s independent from the build tooling

lmergen14:09:07

it has considerably better support for large projects with many subprojects that reference each other, among other things.. i'm using the lein-monolith plugin for quite some time now, but it has its limits

lmergen14:09:28

but it's mostly curiosity to figure out whether this is possible at all

borkdude14:09:43

we have multiple projects/libraries. if it’s not a library we start it in it’s own REPL. if it’s a library and I need to make/try a change, I just evaluate the library namespace in the app’s repl. why do you need subprojects?

lmergen14:09:55

yeah i do that as well, but i like to use cider-refresh-ns and have it refresh all checkout dependencies as well

lmergen14:09:06

i have repls open with the libraries as well, to quickly run the tests

lmergen14:09:51

and it's a large clojure project with 4 different services, but some of these needed to be split up because of dependency hell

borkdude14:09:11

I see. I don’t use that cider functionality.

lmergen14:09:35

it's mostly convenient because it throws away the old references as well

borkdude14:09:49

gotta go, good luck!

borkdude14:09:09

(but if you need to split things up because of dependency conflicts, bundle won’t help)

lmergen14:09:44

yeah, that's actually for situations where you can still override some dependencies and then everything works

lmergen14:09:09

things get nasty where you have multiple dependencies using multiple different versions of netty, grpc, guava, and whatnot

lmergen14:09:28

and at some point just splitting things up becomes a more scalable solution

lmergen14:09:09

one of the alternatives i wanted to consider is rolling custom shadow dependencies for this purpose, but that's another hell in itself