Dub, Cargo, Go, Gradle, Maven
John Gabriele
jgabriele at fastmail.fm
Mon Feb 12 17:13:27 UTC 2018
On Monday, 12 February 2018 at 10:35:06 UTC, Russel Winder wrote:
> In all the discussion of Dub to date, it hasn't been pointed
> out that JVM building merged dependency management and build a
> long time ago. Historically:
>
> Make → Ant → Maven → Gradle
>
> and Gradle can handle C++ as well as JVM language builds.
>
> So the integration of package management and build as seen in
> Go, Cargo, and Dub is not a group of outliers. Could it be then
> that it is the right thing to do. {snip}
As an additional data point, the main project management tool for
Clojure is [Leiningen](https://leiningen.org/). I don't
understand the details under the hood, but it makes use of Maven
infrastructure and can install packages from the Clojure online
package repo, as well as from [Maven
Central](http://search.maven.org/) (the online repo of JVM jars).
Lein installs packages into the same place maven does, into a
"local repo" in an ~/.m2/repository directory. This makes it very
easy to `rm -fr` it to start afresh if needed. Lein keeps
multiple versions of packages when your various projects use
different versions of the same library.
The lein project config file is itself written in Clojure. See a
[sample lein config
file](https://github.com/technomancy/leiningen/blob/master/sample.project.clj) if interested.
When I first encountered lein I was confused. Was it for project
creation, dependency management, building and running your app,
or running tests? Turns out it does all of those, and also
supports plug-ins to allow it to do all kinds of other
project-related tasks that aren't built-into the tool (for
example, generating docs --- see the [full list of lein
plug-ins](https://github.com/technomancy/leiningen/wiki/Plugins)).
More information about the Digitalmars-d
mailing list