boot

:boot-clj: https://boot-clj.github.io/ — build tooling for Clojure. Dev chat in #boot-dev
bobcalco 2018-12-23T18:07:03.002700Z

What's the canonical boot way to include dependencies that are local (e.g., in another directory, or a specific jar file on the harddrive that isn't in maven or clojars (e.g., a proprietary db driver), another project being worked on currently but not yet published anywhere, etc?

bobcalco 2018-12-23T18:08:53.004400Z

I love clj deps allowing me to solve this problem but miss the full power of boot and/or lein for creating production artifacts or orchestrating more complex build, deploy and test tasks. Lein has the idea of 'checkouts' but require obviously that the softlink to the actual location of the project also be a lein-based project.

bobcalco 2018-12-23T18:10:28.005700Z

I kinda just want to stop cycling between the smorgasbord of options and find a consistent workflow I can repeatably use to scale up from a simple PoC to a complex system. I am so tired of Clojure (not to say JVM) tooling getting in the way of Clojure productivity.

alexyakushev 2018-12-23T18:40:33.006100Z

@bobcalco You can put this in your build.boot:

(boot.pod/add-classpath "path/to/file.jar")

alexyakushev 2018-12-23T18:41:46.007100Z

It is not a "recommended" way of doing things (hurts build reproducibility, blah-blah-blah), but this hack worked for when I needed that.

bobcalco 2018-12-23T18:48:04.007400Z

Sure - the idea is that as the project matures, you start hardening on good devops standard practices. But I find it hard "starting" projects such that the steps to devops nirvana are incremental and more to the point can be done consistently and reliably once your idea of how the project should be structured emerges from the initial primordial soup in your head.

bobcalco 2018-12-23T18:49:07.007600Z

Also, some drivers are third-party proprietary and I can't redistribute them in any way. At distribution time for my app's functionality, I have to rely on their being included in the classpath by other means.

bobcalco 2018-12-23T18:49:52.007800Z

BTW, I intended these two replies to be to your admonition that this wasn't the "recommended" way of doing things.

alexyakushev 2018-12-23T18:55:09.008Z

That's fine. I also never fully understand the stance of Lein/Boot against depending on local artifacts.

bobcalco 2018-12-23T19:01:56.008200Z

It's driven me mad in some cases. But now clj deps goes in the other extreme - not really supporting production building. I mean, unless I'm missing something (which is possible - I'm just going from the guide page at http://clojure.org). And then there's tooling issues like IntelliJ and Cider preferring lein etc.