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 <[email protected]> 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" <[email protected] on > behalf of [email protected]> 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 [email protected] > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > [email protected] > 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 [email protected]. > 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 [email protected] > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > [email protected] > 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 [email protected]. > 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 [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
