1[coursier](https://github.com/alexarchambault/coursier/) is a pure Scala
2substitute for [Aether](http://www.eclipse.org/aether/). Given a set
3of dependencies, and Maven repositories, it can list all their transitive
4dependencies, solving possible version conflicts.
5
6This is the first release of coursier.
7
8Test it in your browser with its [Scala JS demo](https://alexarchambault.github.io/coursier/#demo).
9
10### Overview
11
12Use it like:
13
14    val repositories = Seq(
15      Repository.ivy2Local,
16      Repository.mavenCentral
17    )
18
19    val dependencies = Set(
20      Dependency(Module("com.github.alexarchambault", "argonaut-shapeless_6.1_2.11"), "0.2.0"),
21      Dependency(Module("com.github.alexarchambault", "shapeless-refined-std_2.11"), "0.1.1")
22    )
23
24    val resolution =
25      Resolution(dependencies) // Initial resolution state
26        .process               // Resolution process (scalaz-stream like)
27        .run(repositories)     // Run the resolution with these repositories
28        .run                   // Run the resulting Task[Resolution]
29
30    // Let's inspect the results
31
32    val allDependencies = resolution.minDependencies // Set[Dependency]
33    val allArtifacts = resolution.artifacts // Seq[Artifact]
34
35    val errors = resolution.errors // Metadata errors (not found, malformed, ...)
36    val conflicts = resolution.conflicts // Version conflicts
37
38    // URLs of the artifacts (JARs)
39    val allArtifactsUrls = allArtifacts.map(_.url) // Seq[String]
40
41Both metadata and artifacts can be cached. Resolution per se only fetches
42metadata, and gives you back artifact URLs.
43