hammerlab/sbt-dependency-graph

Name: sbt-dependency-graph

Owner: Hammer Lab

Description: sbt plugin to create a dependency graph for your project

Forked from: jrudolph/sbt-dependency-graph

Created: 2017-12-07 17:55:35.0

Updated: 2017-12-07 17:55:37.0

Pushed: 2017-12-08 04:01:18.0

Homepage:

Size: 284

Language: Scala

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

sbt-dependency-graph

Join the chat at https://gitter.im/jrudolph/sbt-dependency-graph

Visualize your project's dependencies.

This is a fork of jrudolph/sbt-dependency-graph to quickly provide a public release of some features (dependencyTree filtering and writing to file, dependencyBrowseTree); the org.hammerlab Maven coordinates below include these.

Usage Instructions

sbt-dependency-graph is an informational tool rather than one that changes your build, so you will more than likely wish to install it as a global plugin so that you can use it in any SBT project without the need to explicitly add it to each one. To do this, add the plugin dependency to ~/.sbt/0.13/plugins/plugins.sbt for sbt 0.13 or ~/.sbt/1.0/plugins/plugins.sbt for sbt 1.0:

btPlugin("org.hammerlab" % "sbt-dependency-graph" % "0.10.2")

To add the plugin only to a single project, put this line into project/plugins.sbt of your project, instead.

The plugin currently supports sbt versions >= 0.13.6 and sbt 1.0.x. For versions supporting older versions of sbt see the notes of version 0.8.2.

Main Tasks

All tasks can be scoped to a configuration to get the report for a specific configuration. test:dependencyGraph, for example, prints the dependencies in the test configuration. If you don't specify any configuration, compile is assumed as usual.

dependencyTree filtering

The dependencyTree task supports filtering with inclusion/exclusion rules:

Dependencies are “preserved” iff:

They are then displayed if they are preserved or at least one of their transitive dependencies is preserved.

This mimics the behavior of Maven dependency:tree's includes and excludes parameters.

Examples

Inclusions/Exclusions can be partial-matched against any part of a dependency's Maven coordinate:

ndencyTree -foo          // exclude deps that contain "foo" in the group, name, or version
ndencyTree foo           // include deps that contain "foo" in the group, name, or version

Or they can be fully-matched against specific parts of the coordinate:

ndencyTree -:foo*        // exclude deps whose name starts with "foo"
ndencyTree -*foo*::*bar  // exclude deps whose group contains "foo" and version ends with "bar"

Inclusions and exclusions can be combined and repeated:

ndencyTree foo bar -baz  // include only deps that contain "foo" or "bar" and not "baz"

In all cases, the full paths to dependencies that match the query are displayed (which can mean that dependencies are displayed even though they would have been excluded in their own right, because they form part of a chain to a dependency that was not excluded).

Writing output to file

dependencyTree can have its output written to a file:

t
pendencyTree -o foo

or, directly from the shell:

'dependency-tree -o foo'
Configuration settings

E.g. in build.sbt you can change configuration settings like this:

erScalaLibrary := false // include scala library in output

ndencyDotFile := file("dependencies.dot") //render dot file to `./dependencies.dot`
Known issues
License

Published under the Apache License 2.0.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.