The NASA project I'm working on right now does something similar, though
with lein:
* https://github.com/nasa/Common-Metadata-Repository
The project was started a few years back, before the Components library
(among others) were ready for use, so you'll see some bespoke bits in there.
Similarly, we generate individual uberjars for each sub-project in the
monorepo.
d
On 30 April 2017 at 19:51, Sean Corfield wrote:
> FWIW, at World Singles, we have a monorepo for all our backend code and we
> use Boot to manage dependencies and the build process.
>
>
>
> We have divided the code into subprojects, each with its own
> src/resources/test folders and a deps.edn file specifying the external
> dependencies.
>
>
>
> We have Boot tasks that, given a target subproject, perform a namespace
> dependency analysis across all the subprojects and identify the minimal set
> of artifacts needed to test / run / build that subproject. We build an
> uberjar from each of six of those subprojects. They’re mostly about 20MB
> each (we don’t AOT – that would definitely bloat things).
>
>
>
> 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
>
>
>
> On 4/30/17, 3:40 PM, "Laurens Van Houtven" behalf of _...@lvh.cc> wrote:
>
>
>
> I have a project with several components. Parts are a pretty standard
> Clojure programs with logically separate but related functionality, parts
> are ClojureScript intended for web browsers, and in the future parts might
> be React Native ClojureScript. There are good code-sharing reasons for
> keeping them in one codebase, but that also comes with a lot of downsides.
>
>
>
> Uberjar size is one. There are lots of reasons to want to reduce jar size,
> including performance, but in my case it's also a design constraint. AWS
> Lambda only gives you a 50MB budget. The jars for all AWS APIs add up to
> something just north of that already, and for reasons beyond my
> comprehension AWS doesn't make them available on the classpath the same way
> they do for non-JVM runtimes. A part of my code just talks to AWS services,
> but in the simplest possible project.clj, it'll also be lugging e.g.
> ClojureScript around. Parts use datascript, but others don't.
>
>
>
> Unfortunately in my experience using minimizers like ProGuard with
> uberjars turns out to be a great way to get a tiny jar that doesn't work.
> (I know some folks are experimenting with that to make that better.)
>
>
>
> It seems that the most popular approach to an application that has a lot
> of components is a cluster of separate repos, or at least independent
> directories within a single repository. Does anyone have any experience
> with a single codebase that produces a few different artifacts; say, a few
> different uberjars, some static JS files and maybe an Android/iOS
> deployable? Was it a giant pain in the neck? Is boot helpful at all here?
> Doing this with lein profiles feels a little gauche.
>
>
>
>
>
> lvh
>
> --
> 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.
>
> --
> 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.
>
--
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 Gro