leiningen

N.B. The maintainers are on #leiningen on Libera chat IRC. Go there for direct support/bug reports.
jacklombard 2020-06-29T09:59:53.296100Z

What is the difference between :aot :all and :aot [my-project.core] in the uberjar profile? where my-project.core has the main function. Will lein uberjar recursively go through all the requires and compile them?

2020-06-29T15:03:03.297Z

clojure's compile, which uberjar uses, is "recursive" in the sense that if your compiled ns has require statements at the top level, those namespaces will also be loaded and compiled

2020-06-29T15:03:54.297200Z

in fact there's a trick, when you don't want to / can't aot compile certain namespaces, of hiding the require inside a function so it won't run during compilation and only happens at at runtime

2020-06-29T15:05:07.297400Z

(this means you also need to use resolve, the situation is common enough that clojure now has a requiring-resolve function that combines loading something's namespace, and looking it up and calling it, into one invocation)

jacklombard 2020-06-29T15:05:41.297900Z

Thanks @noisesmith that answered my question