2015-04-23 13 views
8

in Java - maven Build-Tool, können Sie einen Baum von Abhängigkeiten für jeden package/project mit dem Befehl drucken,Haskell Pakete - Abhängigkeitsbaum

mvn dependency:tree -Dverbose -Dincludes=commons-collections 

und Ausgang wird wie eine Baumstruktur von artifacts/dependencies sein,

[INFO] [dependency:tree] 
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT 
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile 
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile 
[INFO] |  \- commons-digester:commons-digester:jar:1.6:compile 
[INFO] |  \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0) 
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile 
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile 
[INFO]  \- commons-collections:commons-collections:jar:2.0:compile 

Also, wie kann ich das gleiche für ein Haskell-Paket mit cabal tun?

+0

Ich glaube nicht, dass es einen existierenden Weg gibt, dies in Kabalen zu tun, obwohl ich denke, dass es hier einige Diskussionen gab: https: //github.com/haskell/cabal/issues/879. Es gibt ein Paket auf Hackage, das das für Sie tun kann: http://hackage.haskell.org/package/cabal-db – Arbus

Antwort

14

Ein Graph, der alle installierten Pakete enthält, kann unter Verwendung von ghc-pkg, z.B.

ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf 

Beachten Sie, dass die graphviz Paket bietet tred und das dot Programm.

+0

BTW, warum hat ghc-pkg einen anderen Befehl 'tred' als Argument? –

+0

Die Daten von 'ghc-pkg' werden über den 'tred'-Filter übertragen, um Kanten zwischen Knoten, die transitiv verbunden sind, zu entfernen. Die '|' sind die Pipes des Kommandozeilen-Interpreters. –

+1

Dies sollte die markierte Antwort sein. Es ist bei weitem das nützlichste. –

2

Für das installierte Paket finden Sie die Abhängigkeiten mit ghc-pkg. Für ein Paket mit dem Namen text, müssen Sie tun: siehe depends Feld zu bestimmen, auf Kabale Datei

$ ghc-pkg field text depends 
depends: array-0.5.0.0-470385a50d2b78598af85cfe9d988e1b 
     base-4.7.0.2-bfd89587617e381ae01b8dd7b6c7f1c1 
     bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5 
     deepseq-1.3.0.2-63a1ab91b7017a28bb5d04cb1b5d2d02 
     ghc-prim-0.3.1.0-a24f9c14c632d75b683d0f93283aea37 
     integer-gmp-0.5.1.0-26579559b3647acf4f01d5edd9491a46 

Für jedes Arbeitsprojekt alles, was Sie tun müssen, ist es Abhängigkeit ist.

+3

Während dies die unmittelbaren Abhängigkeiten zeigt, zeigt das Maven-Feature den vollständigen Abhängigkeitsbaum, was ein wichtiger ist Unterscheidung. Es ist auch eine sehr nützliche Sache zu sehen, besonders angesichts Cabals Tendenz, Probleme mit transitiven Abhängigkeiten zu haben. – rcreswick