Paul, Leiningen can isolate the target-paths by profile if you use :target-path in your project.clj with the %s in it.
Per the sample project.clj file ( https://github.com/technomancy/leiningen/blob/master/sample.project.clj): ;; All generated files will be placed in :target-path. In order to avoid ;; cross-profile contamination (for instance, uberjar classes interfering ;; with development), it's recommended to include %s in in your custom ;; :target-path, which will splice in names of the currently active profiles. :target-path "target/%s/" --Curtis On Monday, July 28, 2014 12:40:45 PM UTC-5, Paul Butcher wrote: > > Ah! I thought that Leiningen put class files in different places for > different profiles, but it looks like I was mistaken. > > Thanks for the EDN hint - that sounds like a good way to go. > > Cheers! > > -- > paul.butcher->msgCount++ > > Silverstone, Brands Hatch, Donington Park... > Who says I have a one track mind? > > http://www.paulbutcher.com/ > LinkedIn: http://www.linkedin.com/in/paulbutcher > Skype: paulrabutcher > > Author of Seven Concurrency Models in Seven Weeks: When Threads Unravel > http://pragprog.com/book/pb7con > > On 28 July 2014 at 18:01:16, Thomas Heller (th.h...@gmail.com > <javascript:>) wrote: > > Your issue is probably due to AOT compilation, uberjar aot compiles > everything and leaves alot of class files in your target directory (aka > classpath). When you run your app afterwards the class file is used instead > of the clj file since the .class file is "newer". When you run lein clean > those .class files are removed and the classloader then looks for the clj > file. > > I'd recommend keeping a config file (can be EDN) and just having a > development and production version instead of using different code. You can > either use a command line argument to choose which config to load or use > leinigen profiles and resource paths so only include the one you want. > > HTH, > /thomas > > On Monday, July 28, 2014 3:45:51 PM UTC+2, Paul Butcher wrote: >> >> Oops - I originally sent this to the ClojureScript group, which >> probably wasn’t the best place. Apologies to those who subscribe to both >> lists for the spam: >> >> I’m clearly misunderstanding something fundamental about how Leiningen >> profiles work. I’d appreciate help fixing my understanding. >> >> I’m trying to create a Ring server that behaves differently when in >> production or development mode. I’ve checked a minimal cut-down version of >> my server into GitHub here: >> >> https://github.com/paulbutcher/profile-problem >> >> There are two different versions of config.clj. The production version >> looks like this: >> >> (ns problem.config) >> (def production true) >> >> And the development version like this: >> >> (ns problem.config) >> (def production false) >> >> The profiles section of project.clj adds the appropriate one of these to >> source-paths depending on which profile is active: >> >> :profiles {:production {:source-paths ["production/src"]} >> :dev {:source-paths ["dev/src"]} >> :uberjar [:production {:aot :all}]} >> >> Finally, the server prints a message during startup: >> >> (println "Starting in" (if config/production "production" "development") >> "mode")) >> >> This all works fine - if I run “lein ring server-headless” or “lein >> with-profile dev server-headless”, I see “Starting in development mode” and >> if I run “lein with-profile production server-headless”, I see “Starting in >> production mode”. >> >> So far so good. >> >> The problem arises after I run “lein ring uberjar”. The uberjar works >> exactly as I would expect (it runs in production mode). But if I then run >> “lein ring server-headless” or “lein with-profile dev server-headless” in >> my project directory, instead of seeing “Starting in development mode”, I >> see “Starting in production mode”. >> >> Running “lein clean” sorts the problem out, but I worry that I’m missing >> something fundamental that’s going to bite me at some point… >> >> Thanks in advance... >> >> -- >> paul.butcher->msgCount++ >> >> Silverstone, Brands Hatch, Donington Park... >> Who says I have a one track mind? >> >> http://www.paulbutcher.com/ >> LinkedIn: http://www.linkedin.com/in/paulbutcher >> Skype: paulrabutcher >> >> Author of Seven Concurrency Models in Seven Weeks: When Threads Unravel >> http://pragprog.com/book/pb7con >> > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clo...@googlegroups.com <javascript:> > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+u...@googlegroups.com <javascript:> > 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+u...@googlegroups.com <javascript:>. > 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.