2015-04-23 27 views
8

in Java - maven strumento di compilazione, è possibile stampare un albero di dipendenze per qualsiasi package/project utilizzando il comando,pacchetti Haskell - albero delle dipendenze

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

e l'uscita sarà una struttura ad albero di artifacts/dependencies come,

[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 

Quindi, come posso fare lo stesso per un pacchetto haskell usando cabal?

+0

Non penso che ci sia un modo per farlo in cabal, anche se penso che ci sia stata una discussione a riguardo qui: https: //github.com/haskell/cabal/issues/879. C'è un pacchetto su hackage che può farlo per te: http://hackage.haskell.org/package/cabal-db – Arbus

risposta

14

Un grafico contenente tutti i pacchetti installati può essere prodotto utilizzando ghc-pkg, ad es.

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

Nota che il pacchetto graphviz fornisce tred e il programma dot.

+0

btw, perché ghc-pkg ha un altro comando 'tred' come argomento? –

+0

I dati di 'ghc-pkg' vengono alimentati attraverso il filtro' tred' per rimuovere i bordi tra i nodi che sono collegati in modo transitorio. I '|' sono i tubi dell'interprete della riga di comando. –

+1

Questa dovrebbe essere la risposta contrassegnata. È di gran lunga il più utile. –

2

Per il pacchetto installato è possibile trovare le dipendenze utilizzando ghc-pkg. Per un pacchetto chiamato text, quello che dovete fare:

$ 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 

Per qualsiasi progetto di lavoro tutto ciò che dovete fare è vedere il campo depends in archivio cabala per determinare è la dipendenza.

+3

Mentre questo mostra le dipendenze immediate, la funzione di maven mostra l'albero di dipendenza completo, che è un importante distinzione. È anche una cosa molto utile da vedere, in particolare data la tendenza di Cabal ad avere problemi legati alle dipendenze transitive. – rcreswick

Problemi correlati