We've moved to a model where we AOT only those namespaces that need to result 
in "Java classes" and we resolve into the main code at runtime for the 
implementation. We have all the AOT "shims" in one project and everything in 
non-AOT projects. That allows us to essentially ignore AOT except for the very 
thin interface Java imposes on our code - and we can work in the REPL with 
nearly all our code and test-drive it etc using a regular Clojure workflow.

Only when the shim actually changes do we need to run `lein install` to AOT 
compile & install an updated JAR, then restart our main project REPL to pick up 
that API change. Since the implementation is require'd and resolve'd in at 
runtime, it can change as much as we want in the meantime.

On Aug 11, 2014, at 2:13 PM, Brian Craft <craft.br...@gmail.com> wrote:
> A number of clojure tools, like tools.namespaces, and codox, don't work with 
> aot compiling, and their docs say to turn it off. However aot compiling isn't 
> really optional: we're embracing the platform, and java libs like their named 
> classes.
> 
> How do you work around this? I can move aot compiling to the uberjar target, 
> but then I can't work on the system from the repl, because it can't be 
> launched. The java libs won't find the classes they need.


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to