Coverage Summary for Class: MavenResolver (dev.suresh.mvn)

Class Method, % Branch, % Line, % Instruction, %
MavenResolver 0% (0/3) 0% (0/9) 0% (0/59)
MavenResolver$resolveTransitively$resolve$1 0% (0/1) 0% (0/12) 0% (0/9) 0% (0/100)
Total 0% (0/4) 0% (0/12) 0% (0/18) 0% (0/159)


 package dev.suresh.mvn
 
 import com.squareup.tools.maven.resolution.Artifact
 import com.squareup.tools.maven.resolution.ArtifactResolver
 
 /**
  * [maven-resolver-demo-snippets](https://github.com/apache/maven-resolver/tree/master/maven-resolver-demos/maven-resolver-demo-snippets)
  *
  * [maven-resolver-provider](https://github.com/apache/maven/tree/master/maven-resolver-provider)
  *
  * [shrinkwrap](https://github.com/shrinkwrap/resolver)
  *
  * [MavenCentral-SolrSearch](https://blog.sonatype.com/2011/06/you-dont-need-a-browser-to-use-maven-central/)
  */
 class MavenResolver {
 
   private val resolver = ArtifactResolver()
 
   fun run() {
     val artifacts = resolveTransitively("org.jetbrains.kotlin:kotlin-stdlib:${App.KOTLIN_VERSION}")
     println("\nResolved artifacts are,")
     artifacts.forEach { println(it) }
   }
 
   private fun resolveTransitively(spec: String): Set<String> {
     val deps = mutableSetOf<String>()
     val resolve =
         DeepRecursiveFunction<Artifact, Set<String>> {
           if (it.coordinate !in deps) {
             deps.add(it.coordinate)
             val artifact = resolver.artifactFor(it.coordinate)
             resolver.resolve(artifact).artifact?.model?.dependencies?.forEach { dep ->
               val depSpec = "${dep.groupId}:${dep.artifactId}:${dep.version}"
               if (depSpec !in deps && dep.scope != "test") {
                 deps.addAll(callRecursive(resolver.artifactFor(depSpec)))
               }
             }
           }
           deps
         }
     return resolve(resolver.artifactFor(spec))
   }
 }