we're really liking deps.edn workflows for running our project and declaring dependencies. is there a boot workflow where we can use deps.edn deps and use boot for building and packaging?
thanks. reading now
not sure how it works, never used it. we rolled our own multi-project .edn file
do yall make artifacts from libs for consumption in older projects? that's where we are right now
we do yes.
older lein project, rewrite of library with deps edn. need to make a maven artifact. how do you do it?
you work at juxt don't you?
there are some clj “plugins” for this already I believe. I used one to create uberjars, but haven’t pushed to maven
I guess you could still write the pom file and do anything you like with it
and no, I don’t work for juxt
ah ok. thought you did. we were looking at one of their "plugins". thanks for the recommendations
fwiw, we use this https://github.com/borkdude/boot-bundle to manage deps in multiple projects that we would like to keep the same
@borkdude Where can one find the current state of dependencies? Is this defined within the project as well or just in bundle.edn
?
You can combine deps just the way you like, by picking them from the bundle file or mixing it with your own inside set-env
Ah I see, I guess you always put a bundle file within a git repo?
Only if we use bundle (but we do this for each project yes). Typically at the root of the repo. We have some JVM opts that we read from a .boot-jvm-options
file in each project, that has -Dboot.bundle.file="../bundle.edn"
@jeroenvandijk but you can also define this in the build.boot file or via an env variable
@jeroenvandijk you can even get your boot.bundle file from a shared library
Nice 🙂
;; if you share your bundle via clojars, uncomment and change:
;; [your-bundle "0.1.1" :scope "test"]
@dpsutton You can use boot-tools-deps
with Boot to make JAR and uber JAR files from your deps.edn
library but I'd look at cambada or juxt's pack instead.
We use depstar to create uber JARs at work.
we tried pack and making a skinny jar. had to modify it to remove a :gen-class in it and it also had no manifest or pom info
so it just kinda zipped our files ¯\(ツ)/¯
We build uber JARs without manifests and use those in production.
We haven't, yet, had a need to build skinny JARs for deployment to Clojars etc.
we're making a library for consumption from an older lein project
and ps thanks for the discussion @borkdude @seancorfield
BTW, you can generate a pom.xml
using clj
directly. I haven't checked how compatible it is with Clojars/Maven tho'...
it needs additional adornment (but clj -Spom
is intended to update the deps and leave the rest alone)
I work at JUXT. Have your daily dose of marketing 😁 https://github.com/juxt/pack.alpha#uploading-to-clojars-or-maven
What's your comment about :gen-class
? :thinking_face: pack doesn't really do anything with AOT, so if you need that you need to combine it with pack using something like https://github.com/juxt/edge/blob/152f1f696479e74d8ed9c63d2f4ed7e846eff585/bin/uberjar#L17-L26
Happy to answer questions in #juxt or directly (it'll be me either way)