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