Estoy tratando de inspeccionar el árbol de dependencia SBT como se describe en la documentación :
sbt inspect tree clean
Pero me sale este error:
[error] inspect usage:
[error] inspect [uses|tree|definitions] <key> Prints the value for 'key', the defining scope, delegates, related definitions, and dependencies.
[error]
[error] inspect
[error] ^
¿Qué está mal? ¿Por qué SBT no construye el árbol?
scala
dependencies
sbt
Cereza
fuente
fuente

Respuestas:
Cuando se ejecuta desde la línea de comando , se supone que cada argumento enviado a sbt es un comando, así
sbt inspect tree cleanque:inspectcomando,treecomando,cleancomandoEsto obviamente falla, ya que
inspectnecesita un argumento. Esto hará lo que quieras:sbt "inspect tree clean"fuente
inspect tree <foo>comando trata de inspeccionar las dependencias de la tarea<foo>en el sistema de configuración y tareas de sbt, que a veces es útil, pero completamente diferente.Si realmente desea ver las dependencias de la biblioteca (como lo haría con Maven) en lugar de las dependencias de tareas (que es lo que se
inspect treemuestra), entonces querrá usar el complemento sbt-dependency-graph .Agregue lo siguiente a su proyecto / plugins.sbt (o el global plugins.sbt).
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")Entonces tienes acceso al
dependencyTreecomando y otros.fuente
sbt update, abra los informes XMLtarget/resolution-cache/reports/en un navegador como MSIE.addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")O eche un vistazo a github.com/jrudolph/sbt-dependency-graph para obtener la última versión e instrucciones.Si desea ver las dependencias de la biblioteca , puede usar el
coursiercomplemento: https://github.com/coursier/coursier/blob/master/doc/FORMER-README.md#printing-treesEjemplo de salida:
texto (sin colores): https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4
Tenga en cuenta que el complemento tiene una naturaleza completamente diferente a la de imprimir árboles. Está diseñado para descargas de dependencias rápidas y simultáneas. Pero es bueno y se puede agregar a casi cualquier proyecto, así que creo que vale la pena mencionarlo.
fuente
Intenté usar el
"net.virtual-void" % "sbt-dependency-graph"complemento mencionado anteriormente y obtuve 9K líneas como salida (hay muchas líneas vacías y duplicados) en comparación con ~ 180 líneas (exactamente una línea para cada dependencia en mi proyecto) como salida en la salida de Mavenmvn dependency:tree. Así que escribí una tarea de envoltura de sbt para ese objetivo de Maven, un truco feo pero funciona:// You need Maven installed to run it. lazy val mavenDependencyTree = taskKey[Unit]("Prints a Maven dependency tree") mavenDependencyTree := { val scalaReleaseSuffix = "_" + scalaVersion.value.split('.').take(2).mkString(".") val pomXml = <project> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> <version>1.0</version> <dependencies> { libraryDependencies.value.map(moduleId => { val suffix = moduleId.crossVersion match { case binary: sbt.librarymanagement.Binary => scalaReleaseSuffix case _ => "" } <dependency> <groupId>{moduleId.organization}</groupId> <artifactId>{moduleId.name + suffix}</artifactId> <version>{moduleId.revision}</version> </dependency> }) } </dependencies> </project> val printer = new scala.xml.PrettyPrinter(160, 2) val pomString = printer.format(pomXml) val pomPath = java.nio.file.Files.createTempFile("", ".xml").toString val pw = new java.io.PrintWriter(new File(pomPath)) pw.write(pomString) pw.close() println(s"Formed pom file: $pomPath") import sys.process._ s"mvn -f $pomPath dependency:tree".! }fuente
mvn.cmdlugar de solo escribirmvnCon sbt 1.4.0, la
dependencyTreetarea está disponible en sbt sin utilizar complementos.sbt 1.4.0: https://github.com/sbt/sbt/releases/tag/v1.4.0
fuente