Created
December 9, 2011 18:05
-
-
Save cemerick/1452640 to your computer and use it in GitHub Desktop.
dependency-tree for Leiningen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; requires [com.cemerick/pomegranate "0.0.2"] | |
;; i.e. https://github.com/cemerick/pomegranate | |
(use '[cemerick.pomegranate.aether :only (dependency-hierarchy resolve-dependencies)]) | |
=> (pprint | |
(dependency-hierarchy | |
'[[incanter "1.2.3"]] | |
(resolve-dependencies {:coordinates '[[incanter "1.2.3"]] | |
:repositories (merge cemerick.pomegranate.aether/maven-central {"clojars" "http://clojars.org/repo"})}))) | |
nil | |
{[incanter "1.2.3"] | |
{[incanter/incanter-charts "1.2.3"] | |
{[incanter/jfreechart "1.0.13-no-gnujaxp"] | |
{[incanter/jcommon "1.0.16"] nil}}, | |
[incanter/incanter-core "1.2.3"] | |
{[incanter/parallelcolt "0.9.4"] | |
{[incanter/arpack-combo "0.9.4"] nil, | |
[incanter/csparsej "0.9.4"] nil, | |
[incanter/jplasma "0.9.4"] nil, | |
[incanter/jtransforms "0.9.4"] nil, | |
[incanter/netlib-java "0.9.4"] nil, | |
[incanter/optimization "0.9.4"] nil}, | |
[org.clojure/clojure-contrib "1.2.0"] nil, | |
[org.clojure/clojure "1.2.0"] nil}, | |
[incanter/incanter-excel "1.2.3"] | |
{[org.apache.poi/poi "3.6"] | |
{[commons-logging "1.1" :scope "runtime"] | |
{[avalon-framework "4.1.3" :scope "runtime"] nil, | |
[javax.servlet/servlet-api "2.3" :scope "runtime"] nil, | |
[logkit "1.0.1" :scope "runtime"] nil}, | |
[log4j "1.2.13" :scope "runtime"] nil}}, | |
[incanter/incanter-io "1.2.3"] | |
{[net.sf.opencsv/opencsv "2.0.1"] nil, | |
[org.danlarkin/clojure-json "1.1-20091229.021828-4"] nil}, | |
[incanter/incanter-latex "1.2.3"] | |
{[net.sf.alxa/jlatexmath "0.9.1-20100323.073428-1"] nil}, | |
[incanter/incanter-mongodb "1.2.3"] | |
{[org.clojars.bmabey/congomongo "0.1.2-20100502.112537-2"] | |
{[org.clojars.somnium/clojure-db-object "0.1.1-20091229.021828-2"] | |
nil, | |
[org.clojars.somnium/mongo-java-driver "1.1.0-20091229.021828-3"] | |
nil}}, | |
[incanter/incanter-pdf "1.2.3"] {[com.lowagie/itext "1.4"] nil}, | |
[incanter/incanter-processing "1.2.3"] | |
{[incanter/processing-core "1.1"] nil}, | |
[jline "0.9.94"] {[junit "3.8.1"] nil}, | |
[swank-clojure "1.3.0-20110104.084027-21"] nil, | |
[swingrepl "1.0.0-20100502.112537-4"] nil}} |
resolve-dependencies
returns an unrooted graph; dependency-hierarchy
prunes that graph based on one or more roots. In nearly all real-world usage, there will be multiple roots, and it wouldn't be wise IMO to have the dependency graph cart around the roots that were used to produce it.
FWIW, these are low-level functions; in reality, the interaction between them is going to get wrapped up into a helper fn that will make the (apparent) complexity disappear. :-)
Interesting. I guess I just need to look into this stuff a little bit closer. Do you have any links that would be useful?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Insanely cool. Out of interest, why the need for the internal call to
resolve-dependencies
withindependency-hierarchy
? It seems strange to see'[[incanter "1.2.3"]]
specified twice.