Sounds like you’re in dire need of an internal installation of artifactory.
Most build tools let you specify custom repositories, and you could then choose to _only_ use artifactory, both as a repo for the public packages you choose to use, and for your private packages. The you can use lein, boot, clj or whatever. Erik. -- i farta 5. nov. 2018 kl. 01:43 skrev Didier <didi...@gmail.com>: >> I’m curious as to how you define this tool: what exactly do you consider a >> “dependency manager” to be, and what are it’s specific functions/features? >> You talk about having an “internal dependency manager” – how do you leverage >> that from Clojure? > > By dependency manager, I mean a system that defines "packages" and > dependencies (including transitive) between them. Which can also retrieve > those packages, and generate the dependency graph. > > I'll try to explain, but my work highly values reproducible builds. And so > everything stems from that. Think of reproducible build as the idea that you > can regenerate the identical artifact and environment produced by a past > deployment. > > So our packages are managed by some system, each package is just a git repo > with some config file that defines the dependencies of the package on others. > > This is what I call the "dependency manager". It tracks package dependencies, > where in our case, packages are git repos. > > You can ask it to generate the dependency graph of a given package, and you > can also use it to retrieve all packages into a local copy, and generate a > classpath pointing in the correct order to all the local copies. > > At this point, it is a lot like tools.deps. Except that it also has a global > registry with additional meta data support for packages, like versions. > > Another difference is that it is tied into our build and deployment process. > When you build a package, the build system uses the dependency manager to > pull down all transitive packages of the defined version, it then proceeds to > build them in order. All artifacts are then cached in an artifact repository. > The package thus references a git repo, each package version maps to an exact > commit, and artifact build cache. > > When we deploy, it's just the same thing that happens. The host uses the > dependency manager to build the dependency tree, but the difference here, is > that, instead of retrieving the git source for the specified commits of the > specified versions of each package, it will grab there corresponding cached > artifacts as a performance optimization. > > So now, when it comes to Clojure, I can't use lein or tools.deps to retrieve > package dependencies, since they don't know about our internal packages and > how to retrieve them. I already have a configuration format to specify > dependencies on other packages, and a cli tool which can retrieve them > locally (either their source or their corresponding built artifact) from our > internal source and artifact repos, and can also generate the classpath. > > What I don't have though, is a way to perform Clojure build tasks, like run > tests, generate coverage reports, perform AOT, generate Java classes, etc. I > can't use lein for that, since I couldn't find how to have it use a custom > classpath for all of its tasks, it seems to always implicitly assumes it will > retrieve the packages itself and build the classpath. > > So I basically use Ant. Which surprisingly, is one of the last build tool > that does not complect itself with dependency management as well. So I can > use it purely to build. And I created custom Ant tasks for the Clojure > related tasks I needed. > > I'd love a standard Clojure build tool that is decoupled from a dependency > manager, which I could use instead of Ant, and where I didn't have to write > the Clojure tasks myself. Though since I do a lot of mixed Java/Clojure > project, it would need to also support Java build tasks. So who knows, I > might never have the full package I dream off. > > Something else that is really painful is bringing in an external Clojure > package internally. I'm forced to re-write the dependency format to our > internal one. So if it's project.clj or deps.edn, I need to change it to our > internal one. Also painful is having to retrieve the source for these, and > make an internal source copy. I feel like tools.deps might actually help me > here long term, if everything move to source only dependencies, I could > leverage it to transitively retrieve and copy over all source and their > source dependencies. > > Sorry for the long wall of text, but this stuff is actually kind of > complicated. > >> On Sunday, 4 November 2018 15:35:29 UTC-8, Sean Corfield wrote: >> I guess I see the need for a dependency manager. >> >> >> >> I’m curious as to how you define this tool: what exactly do you consider a >> “dependency manager” to be, and what are it’s specific functions/features? >> You talk about having an “internal dependency manager” – how do you leverage >> that from Clojure? >> >> >> >> 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 >> >> >> >> From: clo...@googlegroups.com <clo...@googlegroups.com> on behalf of Didier >> <did...@gmail.com> >> Sent: Sunday, November 4, 2018 10:58:43 AM >> To: Clojure >> Subject: RE: What's the end goal for tools.deps? >> >> Thanks everyone. >> >> I guess I see the need for a dependency manager. And I love having a CLI to >> launch Clojure programs. And I understand it is fundamental. That said, it >> always felt like Lein had solved that problem long ago. Maybe it wasn't >> official enough. But Lein could have been bundled with Clojure and >> effectively solved the same problems and more. >> >> That said, I do prefer the tools.deps abstraction. Just feels a little like >> reinventing the wheel. >> >> I'll be interested to read your blog posts Sean. >> >> At my work, I can't use tools.deps, because we have an internal dependency >> manager. And all dependencies are imported and vetted in it first. So I've >> always wanted a build tool that was decoupled from dependency management. >> Since tools.deps only outputs a classpath, I assume all these extra tools >> you mentioned using to build and run your tests and deploy somehow work only >> given a classpath. They might be useful to me. >> >> Regards >> >> -- >> 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 >> 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 >> 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. >> 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. -- 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.